2016-07-07 4 views
0

uwpアプリケーションのWinrtXamlToolkitTreeViewコントロールを使用しています。コンディションに応じていくつかのTreeViewItemに異なるスタイルを適用したいので、StyleSelectorから派生したTreeViewItemStyleSelectorクラスを作成し、SelectStyleCore関数をオーバーライドします。WinrtXamlToolkit TreeView ItemContainerStyleSelectorが起動しない

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 
     } 

次に、このように使用します。

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

以降のページでページ資源に

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

問題は、SelectStyleCoreオーバーライドが呼び出されないことです。なぜ誰が知っていますか?

+0

問題を再現できます。しかし、これに対する解決策は見つかりませんでした。私はWinRTXamlToolKitのGithubに問題を投稿しました。応答を待つつもりです:) –

+0

応答は遅れて完了していませんが、応答です。:) –

答えて

0

私はいくつかの理論を持っていますが、これはうまくいかない理由はまだわかりません。一つは実装されたことではありません。おそらく少なくともルートレベルではItemsControlなので、動作するはずですが、実装されている(階層的に)ためにItemContainerStyleSelectorTreeViewからTreeViewItemsに転送する必要があります。

まだそれを再現しようとする機会はありませんでしたが、それを修正しようとすると、まずそのプロパティーをHeaderedItemsControl.csに転送しようとしました - おおよそ "// Note: this is where we would apply the HeaderTemplateSelector (...) (if implemented)"と表示されます。別の方法(ツールキットのコードを変更したくない場合)は、TreeViewItemのテンプレートとテンプレート内のテンプレートを指定することがあります。異なるデータ項目に対して異なるテンプレート部分にStyleSelectorを使用します。

+0

あなたの答えをありがとう。私はすでにTreeViewItemのスタイルを改ざんして、オプション2に行きました。これを見て、素晴らしいツールキットのために時間をとっていただきありがとうございます:) – Corcus

関連する問題