我有一个包含视觉状态的列表框项目模板。我有DisplayStateBehaviors将状态设置为开/关状态。我的实施只有1/2工作。在初始显示时,无论DataContext中的值如何,基本状态都是活动的。当DataContext中的数据发生更改时,将激活正确的状态。
如何在列表框的初始显示中显示正确的状态。
出于安全原因,我无法复制/粘贴XAML或View-Model代码。
编辑:虽然我无法复制/粘贴真实代码,但以下骨架有望重现此问题。
在全局可见的资源文件中:
<DataTemplate x:Key="MyObjectItemTemplate">
<Grid>
<VisualStateManager.VisualStateGroups>
... blend goodness ...
</VisualStateManager.VisualStateGroups>
</Grid>
</DataTemplate>
通过将数据上下文与主UI中列表框的ItemsTemplate属性相关联,将数据上下文传递到数据模板中。
<ListBox ... ItemTemplate="{DynamicResource MyObjectItemTemplate}" .../>
答案 0 :(得分:0)
我发现了我的问题。如果它帮助了其他人,我所做的就是将DataTemplate的内容提取到UserControl中。这使一切按预期工作。 DataTemplate仍然存在并且仍然存在,但它只有一个元素 - 用户控件。视觉状态都是用户控件的一部分。
在全局可见的资源文件中:
<DataTemplate x:Key="MyObjectItemTemplate">
<MyNamespace:MyUserControl/>
</DataTemplate>
在单独的文件MyUserControl.cs
中<UserControl ... x.Class="MyNamespace.MyUserControl" ...>
<Grid>
<VisualStateManager.VisualStateGroups>
... blend goodness ...
</VisualStateManager.VisualStateGroups>
</Grid>
</UserControl>
通过将数据上下文与主UI中列表框的ItemsTemplate属性相关联,将数据上下文传递到数据模板中。
<ListBox ... ItemTemplate="{DynamicResource MyObjectItemTemplate}" .../>