ジュリアン
これは本当に良い質問です。独自のツリー ビュー アイテムを作成してみませんか? :)つまり、最初からではなく、既存の TreeViewItem から派生させて、プロパティを追加するだけです。簡単なサンプルを用意しましたが、必要に応じて自由に変更してください (完全に明確でない場合は質問してください)。さあ行こう:
public class TreeViewItem_CustomControl : TreeViewItem
{
static TreeViewItem_CustomControl()
{
HasChildrenProperty = DependencyProperty.Register("HasChildren", typeof(Boolean), typeof(TreeViewItem_CustomControl));
}
static DependencyProperty HasChildrenProperty;
public Boolean HasChildren
{
get
{
return (Boolean)base.GetValue(HasChildrenProperty);
}
set
{
if (value)
{
if (this.Items != null)
{
this.Items.Add(String.Empty); //Dummy item
}
}
else
{
if (this.Items != null)
{
this.Items.Clear();
}
}
base.SetValue(HasChildrenProperty, value);
}
}
}
これはカスタム TreeViewItem のコードです。XAML で使用してみましょう。
<TreeView>
<TreeViewItem Header="qwer">
Regulat tree view item.
</TreeViewItem>
<CustomTree:TreeViewItem_CustomControl x:Name="xyz" Header="temp header" Height="50">
<TreeViewItem>Custom tree view item, which will be removed.</TreeViewItem>
</CustomTree:TreeViewItem_CustomControl>
</TreeView>
ご覧のとおり、最初のアイテムは通常のアイテムで、2 番目のアイテムはカスタム アイテムです。子供が1人いることに注意してください。次に、HasChildrenプロパティを ViewModel の Boolean オブジェクトにバインドするか、上記の XAML の背後にあるコードからHasChildren をFalseに設定してカスタム クラスをテストするだけです。
xyz.HasChildren = false;
要素に子が 1 つあるにもかかわらず、展開ボタンが表示されないため、カスタム クラスが機能します。
お役に立てば幸いですが、ご不明な点がございましたらお気軽にお問い合わせください。
ピーター。