在我的 C# Windows 应用商店应用程序中,我试图将 ListBoxItem
的 Visibility
属性绑定(bind)到存在于每个 Items
中的属性在 ItemsSource
中。
基本上我所拥有的是:
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>
但我无法绑定(bind)到 ListBox.ItemContainerStyle
内的 isVisible
属性。相反,它希望我绑定(bind)到 DataContext
的另一个属性。如果我向下移动几行到 ListBox.ItemTemplate
,我就可以绑定(bind)到 ItemsSource
中各个 ExampleClass
项目的属性,但为什么我无法在 ItemContainerStyle
内部绑定(bind)到上面几行的那些相同属性?
最佳答案
您不能绑定(bind)到字段。您需要将其设为属性并实现 INotifyPropertyChanged
。
bool isVisible;
public bool IsVisible
{
get { return isVisible;}
set
{
isVisible = value;
OnPropertyChanged("IsVisible");
}
}
关于c# - 将 Listbox.ItemContainerStyle 绑定(bind)到当前项目属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31276186/