Wpf 选择组合框中的项目时设置为可见
正如标题所说,我有一个隐藏的边框,里面有一些控件,我想在选择组合框中的特定项时显示它 我尝试了以下方法Wpf 选择组合框中的项目时设置为可见,wpf,binding,triggers,Wpf,Binding,Triggers,正如标题所说,我有一个隐藏的边框,里面有一些控件,我想在选择组合框中的特定项时显示它 我尝试了以下方法 <ComboBox Name="cmbRequiredRule" SelectedValuePath="Content" SelectedValue="{Binding
<ComboBox Name="cmbRequiredRule" SelectedValuePath="Content"
SelectedValue="{Binding Path=ClientValidation.NarrativeRequiredRule}">
<ComboBoxItem>All</ComboBoxItem>
<ComboBoxItem>Matching</ComboBoxItem>
</ComboBox>
<Border Visibility="Collapsed">
<Border.Resources>
<Style TargetType="{x:Type Border}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ClientValidation.NarrativeRequiredRule}" Value="Matching">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Resources>
....
</Border>
但触发器似乎不起作用可能是有约束力的问题。在下面的示例中:
<DataTrigger Binding="{Binding Path=ClientValidation.NarrativeRequiredRule}" Value="Matching">
ClientValidation位于哪里?因为如果整个视图的DataContext绑定到VM,则需要包括这些层次结构。检查输出日志,如果绑定失败,它将抛出一些错误请尝试在样式设置器中设置
可见性=折叠
,而不是作为边框标记的一部分。我曾经遇到过这样的问题:当值被指定为标记的一部分时,DataTrigger将不适用
<Border>
<Border.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Test}" Value="Matching">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Resources>
...
</Border>
...
本地指定的值接管样式。因此,你需要
<Setter Property="Visibility" Value="Collapsed" />
我在属性上有一个断点,它到达了该点+我在输出中没有看到任何绑定错误。这很好。在ViewModel中,是否实现INotifyPropertyChanged?因为如果你不知道,那么WPF就不知道你的属性是否发生了变化。同样的属性在其他绑定中使用,并且可以正常工作,所以我怀疑触发器是这样的,在我尝试我在问题中发布的绑定之前。“两者都有相同的问题。”马可姆我改变了答案。我只是想起了我过去用这种方式定义样式时遇到的一个问题。
<Setter Property="Visibility" Value="Collapsed" />
<Style TargetType="{x:Type Border}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ClientValidation.NarrativeRequiredRule}" Value="System.Windows.Controls.ComboBoxItem: Matching">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>