WinrtXamlToolkit TreeView ItemContainerStyleSelector未触发

时间:2016-07-07 10:51:32

标签: xaml uwp winrt-xaml-toolkit

我在uwp应用中使用TreeView中的WinrtXamlToolkit控件。我想根据条件对一些TreeViewItems应用不同的样式,所以我创建了一个类TreeViewItemStyleSelector,它派生自StyleSelector并覆盖SelectStyleCore函数。

 public Style ResourceStyle { get; set; }

 public Style ClassroomStyle { get; set; }

 protected override Style SelectStyleCore(object item, DependencyObject container)
        {
            // control never reaches here. 
            // logic to apply style
        }

然后在xaml中我像这样使用它。

在页面资源中

<StyleSelectors:TreeViewItemStyleSelector ResourceStyle="{StaticResource AStyle}" ClassroomStyle = "{StaticResource BStyle}"/> 

稍后在页面中。

<wxtControls:TreeView ItemsSource="{Binding StructureViewModels}" ItemContainterStyleSelector="{StaticResource TreeViewItemStyleSelector}" />

问题是从不调用SelectStyleCore覆盖。有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

虽然我有一些理论,但我还不确定这是什么原因并不起作用。一个是 - 这从未实施过。也许至少在根级别它应该有效,因为它是ItemsControl,但由于它的实现方式(层次结构) - ItemContainerStyleSelector必须从TreeViewTreeViewItems,它不是。

我还没有机会尝试重现它,但如果我试图修复它或解决它 - 我会首先尝试在HeaderedItemsControl.cs中转发该属性 - 大致在哪里说&#34; // Note: this is where we would apply the HeaderTemplateSelector (...) (if implemented)&#34;。替代方案(如果您不想修改工具包的代码)可能是指定TreeViewItem的模板,并在模板中 - 在模板上使用StyleSelector部分您希望对不同的数据项有所不同。