0

我有一个包含视觉状态的列表框项目模板。我有 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}" .../>
4

1 回答 1

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}" .../>
于 2012-04-09T19:16:11.623 回答