绑定列表框.ItemContainerStyle到当前项目属性

本文关键字:项目 属性 列表 ItemContainerStyle 绑定 | 更新日期: 2023-09-27 18:01:30

在我的c# Windows Store应用程序中,我试图将ListBoxItemVisibility属性绑定到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上面几行的相同属性呢?

绑定列表框.ItemContainerStyle到当前项目属性

不能绑定字段。你需要使它成为一个属性并实现INotifyPropertyChanged

bool isVisible;
public bool IsVisible
{
  get { return isVisible;}
  set
  {
    isVisible = value;
    OnPropertyChanged("IsVisible");
  }
}