windows 在WinUI 3和C#中,如何从具有selectionMode=“Multiple”属性的ListView绑定到自动生成的CheckBox控件?

6uxekuva  于 2023-03-04  发布在  Windows
关注(0)|答案(1)|浏览(143)

我有下面的XAML代码,它绑定到一个对象,以便用C#填充WinUI 3中的ListView:

<ListView x:Name="filterListView" selectionMode="Multiple" 
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding SubFilterName}" TextWrapping="Wrap" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

这段代码在ListView中的每一项的文本左侧创建了一个复选框列表,但是没有CheckBox控件可供绑定......它是使用selectionMode="Multiple"属性自动创建的。

因此,问题是,如何将boolIsSelected属性绑定到上面代码中由filterListView创建的自动生成的CheckBox

在XAML或C#代码隐藏中的答案都可以。只要我能让它工作。

e0bqpujr

e0bqpujr1#

AFAIK,没有直接的方法来实现这一点。您可以像这样绑定这些CheckBoxes

// FindDescendants() comes from CommuityToolkit.WinUI.UI NuGet package.
foreach (ListViewItem listViewItem in this.filterListView
    .FindDescendants()
    .OfType<ListViewItem>())
{
    if (listViewItem.Content is not SubFilter subFilter)
    {
        continue;
    }

    listViewItem.SetBinding(
        ListViewItem.IsSelectedProperty,
        new Binding()
        {
            Source = subFilter,
            Path = new PropertyPath("IsSelected"),
            Mode = BindingMode.TwoWay,
            UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
        });
}

但是我会将SelectionMode设置为None,并在DataTemplate中添加一个CheckBox

相关问题