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>