首页 > 解决方案 > 如何绑定到 WPF 中的 SelectedValue 数据上下文属性?

问题描述

我有一个显示一些模型项目的列表框。我想根据与所选列表框项关联的模型项的布尔值隐藏列表框下方的一些控件。

我尝试了以下但没有奏效:

1) 设置 ListBox SelectedValuePath="MyModelBooleanProperty"

2)向我要隐藏的控件添加数据触发器,如下所示

<DataTrigger Binding="{Binding ElementName=FolderList, Path=SelectedValue}" Value="False">
   <Setter Property="Visibility" Value="Collapsed"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=FolderList, Path=SelectedValue}" Value="True">
   <Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>

标签: c#wpfdata-binding

解决方案


我用了这个,它奏效了。还要确保您没有明确设置Visibility覆盖Style所做的任何内容的 TextBlock。

<ListBox
     x:Name="FolderList"
     ItemsSource="{Binding Source={StaticResource ViewModel}, Path=List}"
     SelectedValuePath="SomeBooleanProperty">
     <ListBox.ItemTemplate>
         <DataTemplate>
             <TextBlock Text="{Binding SomeStringProperty}" />
         </DataTemplate>
     </ListBox.ItemTemplate>
 </ListBox>

 <TextBlock>
     <TextBlock.Style>
         <Style TargetType="TextBlock">
             <Setter Property="Visibility" Value="Visible" />
             <Style.Triggers>
                 <DataTrigger Binding="{Binding ElementName=FolderList, Path=SelectedValue}" Value="False">
                     <Setter Property="Visibility" Value="Collapsed" />
                 </DataTrigger>
                 <DataTrigger Binding="{Binding ElementName=FolderList, Path=SelectedValue}" Value="True">
                     <Setter Property="Visibility" Value="Visible" />
                 </DataTrigger>
             </Style.Triggers>
         </Style>
     </TextBlock.Style>
     My Text Block
 </TextBlock>

推荐阅读