私は次の問題のための普遍的な解決策を作るのに苦労しています:
カスタムTreeViewコントロールを想像してみてください。a;;pwsテーマ-TreeViewコントロールの視覚的構造を構築するために使用される別のxamlファイルに要素のリストがあります。表示されるデータの種類に基づいて背景をペイントしたいonmBorder要素があります。この境界線要素は「+」記号の一部であり、スタイルを通して公開されません。
コードビハインドを使用してこれを行うことができ、このコントロールが提供するイベントのいくつかをサブスクライブしてから、子要素でこの境界線を見つけて、その背景を変更します。ただし、このコードは多くのビューで繰り返され、場合によってはまったく同じであり、場合によってはわずかに異なる変更が加えられます(たとえば、異なるデータ要素のみがタイプについてチェックされます)。
他の手法を使用してこれを行う方法はありますか?そのポインアーでは視覚的な構造が構築されていないため、ここではスタイルセレクターを使用できるようです。そのため、この要素を名前で検索することはできません。また、この要素は、コントロールのプロパティを通じて公開されません。
編集:
現在、このコントロールを継承するoqwnコントロールを使用していますが、thaztが見つかった場合は、Attached/depenencyプロパティを使用して実行できます。
public class MyTreeView : CustomTreeView
{
}
行の背景を作成する場合は、スタイルセレクターを作成します。
<local:ProductRowtyleSelector x:Key="productRowStyleSelector"
DefaultStyle="{StaticResource defaultProductRowStyle}"
GoodStyle="{StaticResource goodProductRowStyle}"
ScrapStyle="{StaticResource reworkProductRowStyle}" />
GoodStyleは、コントロールテンプレートに存在する行のスタイルを継承します。このようにして、製品のリストを表示する場所ならどこでもスタイルセレコールを使用します。
コントロールテンプレートに追加したBorder要素に対して同じことを行うのと同様の方法はありますか?