0

选择组合框时如何设置文本框的属性。foe 示例在进行组合框选择时设置文本框的背景和 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 才能达到条件值 =“1”或“3”,即数据触发器中的关系比相等更复杂。

对于这种情况,您需要一个转换器。这个链接可以帮助你

如何让 DataTemplate.DataTrigger 检查大于或小于?

于 2012-05-07T11:33:31.053 回答
0

您可以将数据触发器用于组合的选定对象。看看这个先前的问题:WPF Visibility of a UI element based on combo selection

尝试在 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 回答