【问题标题】:Metro App XAML grid view selected item on initial bindMetro App XAML 网格视图在初始绑定时选择的项目
【发布时间】:2013-09-13 15:51:39
【问题描述】:

我在 Metro 应用程序中使用 GridView,并将其源设置为 CollectionViewSource。它的选择模式设置为单一。

我最初遇到的问题是在加载网格时阻止选择初始项目。经过一些研究,我通过将 ListViewBase 的 IsSynchronizedWithCurrentItem 属性设置为 false 解决了这个问题。

但是,我也使用 ItemListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 来处理更改的选择,在这里我使用 itemsviewsource.View.CurrentItem != null 来测试我是否选择了一个项目并处理一些东西。不幸的是,在初始加载时 CurrentItem 不是 NULL。

我的问题是,我在 ItemListView_SelectionChanged 事件(或其他任何地方!)中是否缺少任何明显的东西,我可以用它来检查我在网格初始加载时没有选择任何内容,并将其与显示的内容保持一致在用户界面上!

【问题讨论】:

    标签: c# xaml microsoft-metro winrt-xaml


    【解决方案1】:

    您是否尝试在初始化后在页面的构造函数中添加this.itemGridView.SelectedIndex=-1;。一般可以解决默认选中item的问题(无需设置IsSynchronizedWithCurrentItem为false)

    【讨论】:

    • 我没有任何快乐地尝试过。 selectedchange 事件最初仍以零索引触发,导致选择,然后以 -1 触发。我认为它必须与将 Grid 的源设置为 CollectionViewSource 有关?出于某种原因,这似乎触发了一个选择。
    • 是的,默认选择的问题与 CollectionViewSource 和初始化 ItemsSource 时有关
    • 如果你有一个 Snap 视图,当你添加 IsSynchronizedWithCurrentItem 时,你是否确保你也在 snapview 的 ListView 上添加了它?
    • 否则另一种方法是只设置一个标志以忽略第一个更改的选择
    • 不,没有快照视图。我的 2 个网格位于语义缩放控件内,以防万一。但我两个都设置了。所以,是的,我最终为第一次加载设置了一个标志(我认为是从收集源触发的),然后在下一次加载时检查 -1。并将 IsSynchronizedWithCurrentItem 设置为 false。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2014-01-10
    • 2019-02-26
    相关资源
    最近更新 更多