绑定列表框.ItemContainerStyle到当前项目属性
本文关键字:项目 属性 列表 ItemContainerStyle 绑定 | 更新日期: 2023-09-27 18:01:30
在我的c# Windows Store应用程序中,我试图将ListBoxItem
的Visibility
属性绑定到ItemsSource
中存在的每个Items
的属性。
基本上是这样的:
class ExampleClass
{
bool isVisible;
}
在我的数据上下文中,我有一个ExampleClass
的列表。我想用ListBox
做的是:
<ListBox x:Name="ExampleLB" DataContext=""{StaticResource myContext}" ItemsSource="{Binding ExampleClassList}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<!--This doesnt work-->
<Setter Property="Visibility" Value="{Binding isVisible, Converter={StaticResource VisibilityConverter}"/>
</Style>
</ListBox.ItemContainerStyle>
/*More code here*/
</ListBox>
但是我无法绑定到ListBox.ItemContainerStyle
内部的isVisible
属性。相反,它希望我绑定到DataContext
的另一个属性。如果我向下移动几行到ListBox.ItemTemplate
,我可以绑定到ItemsSource
中单个ExampleClass
项目的属性,但是为什么我不能绑定到ItemContainerStyle
上面几行的相同属性呢?
不能绑定字段。你需要使它成为一个属性并实现INotifyPropertyChanged
。
bool isVisible;
public bool IsVisible
{
get { return isVisible;}
set
{
isVisible = value;
OnPropertyChanged("IsVisible");
}
}