ListView 中绑定属性和直接可见性变化的奇怪行为

Posted

技术标签:

【中文标题】ListView 中绑定属性和直接可见性变化的奇怪行为【英文标题】:Weird behavior with bound properies and direct visibility change in ListView 【发布时间】:2016-10-05 03:59:55 【问题描述】:

我有一个 cmets 列表(带有数据模板)。每个评论的某些部分被隐藏(回复评论框)。我做了一个回复功能,显示隐藏的回复部分,用户写一些消息(在文本框中)然后点击一个发送按钮,一个应用程序应该在发送后隐藏这个块。当我做到这一点时,我陷入了一种奇怪的行为。当我通过可视化树管理评论的隐藏部分的可见性时,即直接在代码隐藏中更改它(在发送消息并将其添加到 Observablecollection 之后):

hiddenPart.Visibility = Windows.UI.Xaml.Visibility.Collapsed;

它可以正常工作(消息被添加到列表中并且我看到了),但是如果我将隐藏部分的可见性绑定到 VeiwModel 中的属性并通过属性更改它,ListView(使用这些 cmets)滚动到一些向上偏移(隐藏回复部分后)。有时甚至达到顶峰。 附言。 ListView 的这个选项无效:

<ItemsStackPanel ItemsUpdatingScrollMode="KeepItemsInView"/>

我不知道为什么会这样。

【问题讨论】:

看来问题与焦点变化有关。 【参考方案1】:

这个奇怪的问题(99%)与 Windows Phone 8.1 Update 1 中的导航错误有关(当您应该通过 Dispatcher 在页面之间导航以避免崩溃时)。

【讨论】:

以上是关于ListView 中绑定属性和直接可见性变化的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

WPF - 将 UserControl 可见性绑定到属性

将 ContextMenu 的 MenuItem 可见性绑定到 ListView 选择

如何为 ListView 的 ContextActions 的 MenuItem 添加可见性绑定

WPF绑定到Listview的Itemtemplate的可见性不起作用[重复]

将 XAML 中的可见性绑定到可见性属性

如何使用 WPF 中的代码绑定 DataGridTextColumn 的可见性属性?