Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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显示/隐藏带有触发器的控件_Wpf_Mvvm_Triggers - Fatal编程技术网

WPF显示/隐藏带有触发器的控件

WPF显示/隐藏带有触发器的控件,wpf,mvvm,triggers,Wpf,Mvvm,Triggers,我是WPF新手,我正在尝试创建xaml逻辑来根据ViewModel上AllowMiscTitle的值显示/隐藏控件。xaml由两个字段组成,一个是标准平铺的组合框(“Mr”、“Mrs”、…、“Other”),当选择“Other”时,我希望文本框显示出来 我创建了以下xaml: <DockPanel Validation.Error="Validation_Error" HorizontalAlignment="Stretch">

我是WPF新手,我正在尝试创建xaml逻辑来根据ViewModel上AllowMiscTitle的值显示/隐藏控件。xaml由两个字段组成,一个是标准平铺的组合框(“Mr”、“Mrs”、…、“Other”),当选择“Other”时,我希望文本框显示出来

我创建了以下xaml:

                <DockPanel Validation.Error="Validation_Error" HorizontalAlignment="Stretch">
                <ComboBox ItemsSource="{Binding Path=Titles, Mode=OneTime}" 
                      Text="{Binding Path=Title}"/>
                <TextBox x:Name="TxtBxTitle" Margin="5,5" Visibility="Visible">
                    <TextBox.Style>
                        <Style>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path=AllowMiscTitle}" Value="false">
                                    <Setter Property="TextBox.Visibility" Value="Hidden"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBox.Style>
                </TextBox>

            </DockPanel>


由于您已在
文本框中明确设置了
可见性
属性,因此
触发器
将不起作用

这样做:

<TextBox x:Name="TxtBxTitle" Margin="5,5">
    <TextBox.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=AllowMiscTitle}" Value="false">
                      <Setter Property="TextBox.Visibility" Value="Hidden"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

原因是。

有一个

<BooleanToVisibilityConverter x:Key="BoolToVis"></BooleanToVisibilityConverter>

您可以按如下方式使用它

<TextBox Visibility="{Binding YourPropertyName, Converter={StaticResource BoolToVis}}"></TextBox>

如果我没弄错你的问题:-

如果选定值绑定到ViewModel中的某些属性,如:-

private string _GenderType;

        public string GenderType
        {
            get
            {
                return _GenderType;
            }
            set
            {
                _GenderType= value;
 RaisePropertyChanged("GenderType");
在xaml中:-

<TextBox.Style>
        <Style>
<Setter Property="TextBox.Visibility" value="Hidden"/>
<Style TargetType="{x:Type TextBox}">   
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=GenderType,ElementName=Combo1}" Value="Other">
                      <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>


组合框的选定值绑定到哪个属性。。??