如何绑定到WPF中的SelectedValue数据上下文属性?

时间:2018-04-29 03:26:44

标签: c# wpf data-binding

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

我尝试了以下但是没有用:

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>

1 个答案:

答案 0 :(得分:0)

我用过它并且有效。另外,请确保未明确设置TextBlock的Visibility覆盖Style所做的任何内容。

<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>