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