0

コンボボックス選択時にテキストボックスのプロパティを設定する方法。この例では、コンボ ボックスが選択されたときにテキスト ボックスの背景と IsEnabled プロパティを設定します。コードビハインドではなく、純粋にXAMLで欲しい。私はMVVMを使用しています

4

2 に答える 2

0

SelectedItems が 1 の場合にのみ textBox1 を有効にする方法

<TextBox Height="23" HorizontalAlignment="Left" Margin="246,177,0,0" Name="textBox2" VerticalAlignment="Top" Width="120">
        <TextBox.Style>
            <Style TargetType="{x:Type TextBox}">
                <Setter Property="IsEnabled" Value="False"></Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=comboBox1, Path=SelectedIndex}" Value="1">
                        <Setter Property="Background" Value="Green"></Setter>
                        <Setter Property="IsEnabled" Value="True"></Setter>
                     </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox> 
    <ComboBox Height="22" HorizontalAlignment="Left" Margin="246,119,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" />

XAML だけでは条件 Value="1" または "3" を達成できないと思います。つまり、データ トリガー内の関係は、等値よりも複雑です。

この場合、コンバーターが必要です。このリンクはあなたを助けることができます

DataTemplate.DataTrigger を取得して大なり小なりチェックするにはどうすればよいですか?

于 2012-05-07T11:33:31.053 に答える
0

コンボの選択したオブジェクトにデータトリガーを使用できます。この前の質問を見てください:コンボ選択に基づく UI 要素の WPF 可視性

selecteditem が のときにトリガーを生成しようとし{x:Null}ます。そのためには、コントロールを DataTemplate 内に配置し、トリガーをテンプレートのトリガー コレクションに配置する必要があります。

サンプル コードは次のとおりです (テストされていません。ご自分で確認してください)。

<TextBox Height="23" HorizontalAlignment="Left" Margin="246,177,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" IsEnabled" Value="True" /> 

<ComboBox Height="22" HorizontalAlignment="Left" Margin="246,119,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" />

<DataTemplate.Triggers> 
     <Trigger SourceName="comboBox1" Property="ComboBox.SelectedItem" Value="{x:Null}"> 
         <Setter TargetName="textbox2" Property="TextBox.IsEnabled" Value="False" />
     </Trigger> 
</DataTemplate.Triggers> 
于 2012-05-07T11:34:05.673 に答える