WPF TreeView
にネストされたデータをバインドするために、HierarchicalDataTemplate
を絶対的に単純に使用しようとしています。何らかの理由で、私の木の子は表示されません。ここでHierarchicalDataTemplateに子が表示されません。
は全体でバツAML:データがName
から取得されます。データテンプレートは、実際のアイテムには適用されないことを
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var collection = new ObservableCollection<MyClass>
{
new MyClass { Name = "parent one" },
new MyClass { Name = "parent two" },
};
collection[0].Children.Add(new MyClass { Name = "child one" });
collection[0].Children.Add(new MyClass { Name = "child two" });
ctTree.ItemsSource = collection;
}
}
class MyClass
{
public string Name { get; set; }
public ObservableCollection<MyClass> Children
= new ObservableCollection<MyClass>();
}
注:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<TreeView Name="ctTree">
<TreeView.Resources>
<HierarchicalDataTemplate DataType = "{x:Type src:MyClass}"
ItemsSource = "{Binding Path=Children}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Window>
、ここではusingsと名前空間から離れて、この背後にあるのC#のすべてですテンプレートが適用されなかった場合、代わりに "MyClass"と表示されます。
子供はどのように見せますか? HierarchicalDataTemplate
のすべての例とまったく同じことをしているようです。
もちろんです!私はこれまで "通常の"バインディングを見てきました。ちょうど1つの質問:私はどのように私が台無しにしたか教えて私の例外は何ですか?私はそれがそうであるように静かに失敗しないことを望む... –
"私はちょうどそれが動作することをテストしたが、"あなたは6分で答えを受け入れることができます "。ありがとうございます。 –
まあ、バインディングは何かが間違っていると、通常はかなり静かです。そのため、デバッグは非常に面倒です。バインドが正しく機能していないように見える場合、私の手順は通常次のとおりです。1)タイプミスがないかチェックします。 2)プロパティが本当に存在することを確認します。 3)DataContextが正しく設定され、期待値に設定されていることを確認します。 4)空のコンバーターをバインディングに追加し、その中にブレークポイントを設定して、何が起こっているかを確認します。 – max