Диалог запуска "Применить" состояние кнопки

Я хочу включить диалоговую кнопку "Применить", когда содержимое некоторых текстовых полей в этом диалоговом окне изменяется.

Вот что я придумал:

<Window.Resources>
    <ResourceDictionary>
        ...
        <Style x:Key="SettingTextBoxStyle" TargetType="{x:Type TextBox}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="TextBox.TextChanged" >

                    <!-- I need something like this -->
                    <Setter Property="ApplyButton.IsEnabled" Value="True" />

                </EventTrigger>
            </Style.Triggers>
        </Style>
    </ResourceDictionary>
</Window.Resources>

<!-- in a galaxy far far away -->
<StackPanel>
        ...
        <TextBox Style="{StaticResource SettingTextBoxStyle}" Text="{Binding Source={x:Static settings:Settings.Default}, Path=OutputFile}"  />
</StackPanel>

<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
    <Button Content="OK" Width="100" Click="OK_Click"/>
    <Button Content="Cancel" Width="100" Click="Cancel_Click" />
    <Button Content="Apply" Name="ApplyButton" Width="100" Click="Apply_Click"/>
</StackPanel>

Как мне добраться ApplyButton.IsEnabled свойство в моем событии триггер?

Я должен вместо всего этого просто использовать то же самое TextChanged обработчик события в обратном коде?

Или что-то другое?

1 ответ

Решение

Вы можете попробовать это:

<Grid>
    <TextBox Name="textBox" Height="28" VerticalAlignment="Top" HorizontalAlignment="Left" Width="95" >
        <TextBox.Triggers>
            <EventTrigger RoutedEvent="TextBox.TextChanged">
                <BeginStoryboard>
                    <Storyboard>
                        <BooleanAnimationUsingKeyFrames Storyboard.TargetName="button1" Storyboard.TargetProperty="(Button.IsEnabled)">
                            <DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="True"/>
                        </BooleanAnimationUsingKeyFrames>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </TextBox.Triggers>
    </TextBox>              
    <Button Height="26" Width="150" IsEnabled="false" Name="button1">Button</Button>
</Grid>
Другие вопросы по тегам