【问题标题】:Make ListView Item Selected Form ItemSource使 ListView 项目选择表单 ItemSsource
【发布时间】:2020-09-08 14:04:46
【问题描述】:

我有一个这样的 ListView

<ListView x:Name="lview" SelectionMode="Multiple">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name, Mode=OneWay}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我正在像这样将数据绑定到这个 Listview

public MainPage()
{
    this.InitializeComponent();
    ObservableCollection<OptionItem> io = new ObservableCollection<OptionItem>();
    io.Add(new OptionItem { Name = "11111111111", IsSelected=false });
    io.Add(new OptionItem { Name = "22222222222", IsSelected=true });
    io.Add(new OptionItem { Name = "33333333333", IsSelected=true });
    io.Add(new OptionItem { Name = "44444444444",IsSelected=false });

    lview.ItemsSource = io;
}   

现在您可以在我的模型中看到,我有一个名为 IsSelected 的属性。如何将它绑定到 listView,以便在 ItemsSource 中选择的项目与在 ListView 中选择的一样?

【问题讨论】:

    标签: c# xaml listview uwp uwp-xaml


    【解决方案1】:

    根据您希望选择发生的时间,订阅ListView 的事件,您可以在其中将选定的OptionItems 添加到选定项目列表中:

    代码

    private void Lview_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        var listView = sender as ListView;
        foreach (OptionItem item in listView.Items)
        {
            if (item.IsSelected)
            {
                listView.SelectedItems.Add(item);
            }
        }
    }
    

    XAML

    <ListView x:Name="lview" SelectionMode="Multiple" SizeChanged="Lview_SizeChanged">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name, Mode=OneWay}" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    

    无论如何,您可能想考虑使用像MVVM 这样的模式,因为这将使您的代码(到目前为止!)更具可读性和更易于维护。

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多