0
我有一个ListBox和他的绑定有点问题。 除了当我调用函数LstExtensionUnSelectAll()时,所有的都很好,因为 没有任何变化,复选框再次被选中。WPF绑定对象
我认为这是一个愚蠢的事情,但我没有看到它。
<ListBox ItemsSource="{Binding LstExtension, Mode=TwoWay}" Grid.Row="0">
<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<CheckBox Content="{Binding Extension}" IsChecked="{Binding Checked}"/>
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这是对象LstExtension:
public class CustomExtensions
{
public string Extension { get; set; }
public bool Checked { get; set; }
public CustomExtensions(string ext)
{
Extension = ext;
Checked = true;
}
}
private List<CustomExtensions> _LstExtension;
public IEnumerable<CustomExtensions> LstExtension
{
get { return _LstExtension; }
set
{
if (value != _LstExtension)
{
_LstExtension = value.ToList();
NotifyPropertyChanged("LstExtension");
}
}
}
internal void LstExtensionUnSelectAll()
{
_LstExtension?.ForEach(c => c.Checked = false);
NotifyPropertyChanged("LstExtension");
}
为什么不添加'NotifyPropertyChanged(“Checked”);'在'Checked'属性中? – ASh
请注意,在ItemsSource绑定上设置Mode = TwoWay是没有意义的。 – Clemens