【问题标题】:how to prevent autoselection of first item in GridView on databind?如何防止在数据绑定上自动选择 GridView 中的第一项?
【发布时间】:2012-07-10 07:13:18
【问题描述】:

当我将 GridView 数据绑定到 ObservableCollection 时,会自动选择集合的第一项。 GridView 的SelectionMode 属性设置为multiple。有什么方法可以防止这种自动选择吗?或者我应该听什么事件,以便我可以将 GridView 的SelectedIndex 重置回-1?

【问题讨论】:

  • 也许 takie 第一个元素并将选择设置为 false ?
  • 问题在于用户最终可能会选择gridview中的第一项
  • 好的,但选择是一回事,将数据加载到视图是第二个。如果我理解您,您不希望在加载后而不是在选择后进行默认选择。还是我误会了你?
  • 我认为你的理解是正确的。我何时/如何将选择设置为 false?
  • 是的,但我是 XAML 中的数据绑定。有没有我可以收听的事件,并将SelectedIndex 切换回 -1 开启?

标签: c# gridview data-binding windows-runtime winrt-xaml


【解决方案1】:

实际上有一个非常简单的解决方案。我在 XAML 中将 GridView 的 SelectionMode 设置为 None。然后,在创建页面时,我将SelectionMode 更改为Multiple

        publicPage()
        {
            this.InitializeComponent();
            itemListView.SelectionMode = ListViewSelectionMode.Multiple;
        }

但是,我遇到的问题似乎是由我自己的程序引起的。这是我遇到的问题的解决方法,自动选择不是默认行为。

http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/da7e9f3b-9a3e-47ca-8223-b50539293f5f

【讨论】:

  • 正如 MSDN 上那篇文章中提到的,真正的解决方案是将 GridView 上的 IsSynchronizedWithCurrentItem 设置为 False。
【解决方案2】:

我的情况正好相反。我有一个绑定到ObservableCollectionGridView,我希望选择第一个项目,但它没有!我想通了为什么会这样。有两种方法可以生成我的ObservableCollection,根据我选择的方法,第一项是否被选中。

例如,我的视图模型中有一个变量 ItemList,我将其绑定到我的 GridView

public ObservableCollection<Item> ItemList { get; private set; }

方法1(未选择)

public void getData()
{
    var myList = // get your list here
    for (int i = 0; i < myList.Count; i++)
    {
        this.ItemList.add(myList[i]);
    }
}

方法2(自动选择第一项)

public void getData()
{
    var myList = // get your list here
    this.ItemList = myList
}

【讨论】:

  • 在你的情况下,你可以这样做listview.selectedIndex = 0;自动选择第一个项目。
【解决方案3】:

在 xaml 中的 gridview 上将 IsSynchronizedWithCurrenItem 属性设置为 false

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多