none
скрипт, работающий в PS2, не работает в PS3 RRS feed

  • Вопрос

  • Есть скрипт, в числе прочего генерирующий экранную форму с использованием WPF.
    При обработке событий ввода текста некоторым переменным присваиваются значения.
    Так вот в PS3 эти переменные как бы действуют только в обработчике события, после закрытия формы присвоенные значения теряются.

    Ну вот, например

    $FormXaml = [xml]'
        <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                Title="MainWindow" Height="350" Width="525">
            <Grid>
                <TextBox Name="Test" HorizontalAlignment="Left" Height="23" Margin="205,147,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
            </Grid>
        </Window>
    '
    
    Add-Type -AssemblyName PresentationFramework
    $Reader = (New-Object System.Xml.XmlNodeReader $FormXaml)
    $Form = [Windows.Markup.XamlReader]::Load($Reader)
    Set-Variable -Name "Test" -Value $Form.FindName("Test")
    
    $Test.add_TextChanged({$q = "qqqqqqqqqq"})
    
    $Form.ShowDialog() | Out-Null
    
    $q
    
    Если запустить этот скрипт в Win 2008 R2 (PS2), ввести в форме текст и закрыть форму, будет выведено "qqqqqqqqqq".
    Если проделать тоже самое в 2012 R2 (PS3), вывод будет пустой.

    Пробовал сделать переменную $q глобальной, не помогает.

    22 апреля 2015 г. 10:03

Ответы

Все ответы