我有一个包含视觉状态的列表框项目模板。我有DisplayStateBehaviors,将状态设置为开/关状态。我的实现只有1/2的作品。在初始显示时,无论DataContext中的值如何,基本状态都是活动的。当DataContext中的数据改变时,适当的状态被激活。DisplayStateBehavior最初没有在列表框项目模板中应用状态转换
如何获得列表框初始显示时显示的正确状态。
出于安全原因,我无法复制/粘贴XAML或View-Model代码。
编辑:虽然我不能复制/粘贴真正的代码,但下面的框架有望重现问题。
在全局可见的资源文件:
<DataTemplate x:Key="MyObjectItemTemplate">
<Grid>
<VisualStateManager.VisualStateGroups>
... blend goodness ...
</VisualStateManager.VisualStateGroups>
</Grid>
</DataTemplate>
数据上下文通过将其与列表框的主UI的ItemsTemplate属性关联传入数据模板。
<ListBox ... ItemTemplate="{DynamicResource MyObjectItemTemplate}" .../>
不知道很多关于DisplayStateBehaviors,但我在速战速决第一次尝试将InvokePropertyChanged在DataContext的是在一个时间,你知道的一切都将被设置绑定到的属性。如果DisplayStateBehavior完全依赖于datacontext的属性,并且在完全构建datacontext对象之前绑定它,那么在datacontext再次发生更改之前,它将不会有其他机会刷新自身。 – Alain 2012-04-09 17:02:59
这是我对此的黑客攻击计划,但似乎并不需要它。这感觉就像是我把事情搞错了或者使用了错误的方法,因为在我看来,这是一个常见的用例。如果我的方法有缺陷,我宁愿“做对,一次”。 – PatrickV 2012-04-09 17:11:24
没有代码,这很难回答。我有类似“什么是DisplayStateBehavior”,“什么是DataContext的形状”和“如何提供DataContext”等问题。有很多机会做不正确的事情,但很难看到没有代码的任何可能的失误。 – 2012-04-09 18:47:44