Изменение выбора ComboBox прерывает DataTrigger - PullRequest
0 голосов
/ 09 апреля 2010

Я пытаюсь установить выбранное значение в выпадающем списке стиля из триггера стиля. Это работает до тех пор, пока мы не изменяем вручную любое значение в выпадающем списке. Но оно перестает работать вообще после ручного изменения выбора. Как я могу решить эту проблему? . Образец кода прилагается. Пожалуйста, помогите

<Window x:Class="InputGesture.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:InputGesture"
    Title="Window2" Height="300" Width="300" Name="Sample">
    <Window.Resources>
        <Style TargetType="{x:Type ComboBox}">
            <Setter Property="ComboBox.SelectedValue" Value="1"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=chk,Path=IsChecked}" Value="True">
                    <Setter Property="ComboBox.IsEnabled" Value="False"/>
                    <Setter Property="ComboBox.SelectedValue" Value="2"/>
                </DataTrigger>
            </Style.Triggers>
            </Style>
    </Window.Resources>
    <StackPanel>
        <CheckBox Name="chk" Height="23"/>
        <ComboBox Name="cmb" Height="23" DisplayMemberPath="Name"             
                  SelectedValuePath="Id" ItemsSource="{Binding ElementName=Sample,Path=DT}">
        </ComboBox>

        <Button Height="23" Click="Button_Click"/>
    </StackPanel>
</Window>

1 Ответ

0 голосов
/ 09 апреля 2010

Я нашел Быстрый, но Грязный Solutuin, я думаю .. Если у кого-то есть идея получше, пожалуйста ..

<Window x:Class="InputGesture.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:InputGesture"
    Title="Window2" Height="300" Width="300" Name="Sample">
    <Window.Resources>
     <Style TargetType="{x:Type ComboBox}">
         <Style.Resources>
                <Storyboard x:Key="valueStoryBoard" >

                    <ObjectAnimationUsingKeyFrames Duration="00:00:00"
                                                   FillBehavior="HoldEnd"
                                                   Storyboard.TargetProperty="SelectedValue">
                        <DiscreteObjectKeyFrame KeyTime="00:00:00"
                                                Value="{x:Null}" />
                        <!--<DiscreteObjectKeyFrame KeyTime="00:00:00"
                                                Value="2" />-->

                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </Style.Resources>
             <Style.Triggers>
            <DataTrigger Binding="{Binding IsChecked, ElementName=chk}"
                         Value="True">
                <DataTrigger.EnterActions>
                    <BeginStoryboard x:Name="stb" Storyboard="{StaticResource valueStoryBoard}" />
                </DataTrigger.EnterActions>
                <Setter Property="ComboBox.IsEnabled" Value="False"/>
                <DataTrigger.ExitActions>
                <StopStoryboard BeginStoryboardName="stb" />
                </DataTrigger.ExitActions>
            </DataTrigger>
        </Style.Triggers>
            </Style>

    </Window.Resources>
    <StackPanel>
        <CheckBox Name="chk" Height="23"/>
        <ComboBox Name="cmb" Height="23" DisplayMemberPath="Name"
                 SelectedValuePath="Id" ItemsSource="{Binding ElementName=Sample,Path=DT}">
        </ComboBox>

        <Button Height="23" Click="Button_Click"/>
    </StackPanel>
</Window>
...