Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在选择组合框时设置文本框的属性WPF XAML_Wpf_Wpf Controls - Fatal编程技术网

在选择组合框时设置文本框的属性WPF XAML

在选择组合框时设置文本框的属性WPF XAML,wpf,wpf-controls,Wpf,Wpf Controls,选择组合框时如何设置文本框的属性。例如,在选择组合框时设置文本框的背景和IsEnabled属性。我希望它完全在XAML中,而不是在代码隐藏中。仅当SelectedItems为1时,我使用MVVM如何启用textBox1 <TextBox Height="23" HorizontalAlignment="Left" Margin="246,177,0,0" Name="textBox2" VerticalAlignment="Top" Width="120"> <

选择组合框时如何设置文本框的属性。例如,在选择组合框时设置文本框的背景和IsEnabled属性。我希望它完全在XAML中,而不是在代码隐藏中。仅当SelectedItems为1时,我使用MVVM如何启用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”,即数据触发器中的关系比等式更复杂

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


您可以对combo的选定对象使用datatrigger。看看前面的问题:

当selecteditem为
{x:Null}
时,尝试生成触发器。为此,需要将控件放在DataTemplate中,并将触发器放在模板的触发器集合中

以下是示例代码(未测试,请自行检查):


这个问题类似于:如何在数据触发器中有两个或多个条件,或者为属性指定多个值。我想为SelectedIndex指定多个值。我们可以这样做吗?看起来您采用的是反向逻辑。为什么不检查SelectedItem==null?我们可以使用SelectedItem!=我不这么认为。触发器将检查是否为正相等。因此,您需要做的是在其他控件中为案例SelectedItem设置默认样式=无效的然后为SelectedItem Value=“{x:Null}”创建一个简单触发器。我希望在选择组合框时启用一个文本框,否则它将被禁用。首先,当应用程序运行时,文本框也应该被禁用,并且只有当combobox选择时,文本框才应该被启用。纯粹在XAML中,因为我正在关注MVVM,我不希望它出现在代码隐藏中。
<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>