c# - 选中 WPF 中的全选复选框不会更改列表框中的其他复选框

标签 c# wpf listbox

我使用 this 实现了一个 ListBoxthis .我将我的 29 个对象的实际列表绑定(bind)到它并且它运行良好。 在 XAML 中:

<ListBox Name="WBauNrList" ItemsSource="{Binding}"  Grid.Row="7" Grid.Column="2" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True" Height="100" >
    <ListBox.ItemTemplate>
        <HierarchicalDataTemplate>
            <CheckBox Content="{Binding Baunr}" IsChecked="{Binding IsChecked,Mode=TwoWay}"/>
        </HierarchicalDataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

在代码中:

datenpunktList = new ObservableCollection<Datenpunkt>();
foreach (var d in WerkstattList.DistinctBy(p => p.lokNr))
{
    var newd = new Datenpunkt() { Baunr = d.lokNr };
    datenpunktList.Add(newd);
}

WBauNrList.ItemsSource = datenpunktList;

但是问题:

我想要一个全选 CheckBoxes 以使用户能够选择和取消选择所有项目。它的工作方式很奇怪!

选中selectAll CheckBox后,将选中所有不在滚动条范围内的项目(列表滚动),然后我应该向下和向上滚动以查看所有项目检查。

XAML:

<CheckBox Name="selectAll" Click="selectAll_Click" >Secelct all</CheckBox>

代码:

private void selectAll_Click(object sender, RoutedEventArgs e)
{
    foreach (Datenpunkt item in WBauNrList.Items)
    {
        item.IsChecked = true ;
    }
}

我不知道该怎么做。

提前致谢,莫

最佳答案

您的属性 IsChecked 实现可能如下所示。

public class Datenpunkt : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void Notify(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    private bool _isChecked;
    public bool IsChecked
    {
        get { return _isChecked; }
        set
        {
            _isChecked = value;
            Notify("IsChecked");
        }
    }
}

看看 MSDN INotifyPropertyChanged页面了解更多信息。

关于c# - 选中 WPF 中的全选复选框不会更改列表框中的其他复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45035503/

相关文章:

c - gtk 中的列表框

wpf - 更新 WPF ListBoxItem 而不使用 ListBox.Items.Refresh()?

c# - 启用审计和威胁检测选项后,如何在 Azure SQL 数据库中测试威胁检测事件?

c# - 将 nlog 中的记录添加到 dataType = date 的字段

wpf - 根据条件显示/隐藏项目控制中的项目

wpf - 问题绑定(bind)图像源依赖属性

c# - 将可观察集合绑定(bind)到 XAML 中的 ListBox

javascript - 如何加快 Angular/Mvc.net 的图像加载速度

c# - 是否有任何约定或内置概念如何注入(inject) Json 序列化程序?

wpf - 如何在WPF中的ListBox中编写 "Selection Changing"事件?