【问题标题】:How to automatically set IsSelected on a GridViewItem?如何在 GridViewItem 上自动设置 IsSelected?
【发布时间】:2012-10-18 19:05:26
【问题描述】:

我有一个包含所有属性的对象列表:IsSelected。现在我尝试在属性为 true 时自动选择 GridView 中的项目。

我尝试在 GridView 中覆盖 PrepareContainerForItemOverride 并设置与对象的绑定,但没有成功。有什么想法吗?

protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
    base.PrepareContainerForItemOverride(element, item);

    var listItem = element as GridViewItem;
    var binding = new Binding 
    {
        Mode = BindingMode.TwoWay, 
        Source = item, 
        Path = new PropertyPath("Selected")
    };
    if (listItem != null) 
        listItem.SetBinding(SelectorItem.IsSelectedProperty, binding);
}

【问题讨论】:

    标签: c# wpf gridview user-controls microsoft-metro


    【解决方案1】:

    我是如此接近。我只需要设置:

    protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
    {
        base.PrepareContainerForItemOverride(element, item);
    
        var listItem = element as GridViewItem;
        listItem.IsSelected = true;
    }
    

    ..选择所有项目。

    【讨论】:

      【解决方案2】:

      您还可以使用 WinRT XAML 工具包中的ListViewExtensions.BindnableSelection,它允许您绑定到一个列表,该列表是您的 GridView 的 ItemsSource 的子集,并且包含您想要选择的项目。

      【讨论】:

      • 遗憾的是,这些扩展不再适用于 WinRT 8.1
      • 真的吗?什么坏了?
      • 我尝试在 GridView 中绑定 SelectedItems,但没有成功。
      • 我必须道歉,我很惊讶它现在正在工作。我必须使用一个初始化的 ObservableCollection,然后一切都很好。
      • 顺便说一句:Filip,感谢您在 WinRT XAML 工具包上付出的巨大努力。它使使用 MVVM 创建商店应用程序变得更加容易。
      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 2022-08-08
      • 2010-12-25
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多