私はTreeView
私のデータクラスのリストにバインドしています。実際、私はJSONデータを使用しており、それからListを作成しています。DataTemplate
また、 inTreeView
を保持するinImage
とTextBlock
inを定義しますStackPanel
。しかし、プロジェクトを実行すると、必要に応じてテキストのみが表示され、画像は表示されません。次に、宣言/定義を使用してDataTemplate
fromTreeView.ItemTemplate
を転送しましたが、何も表示されません。そして、私は得始めますUserControl.Resources
DataType
System.Windows.Data Error: 40 : BindingExpression path error: 'IconImage' property not found on 'object' ''TVDataStructure' (HashCode=32882480)'. BindingExpression:Path=IconImage; DataItem='TVDataStructure' (HashCode=32882480); target element is 'Image' (Name=''); target property is 'Source' (type 'ImageSource')
TVDataStructure
hasIconImage
およびHeader
名前付きのパブリック プロパティに転送DataTemplate
するとTreeView.ItemTemplate
、適切にバインドされず、ヘッダー オブジェクトと同じmy DataStructure
hasとして名前が表示されるだけだと思います。Header
TreeViewItem's
XAML コード
<UserControl.Resources>
<DataTemplate x:Name="TVIDataTemplate" DataType="{x:Type sotc:TVDataStructure}" >
<StackPanel Orientation="Horizontal">
<Image Name="IconHolder" Source="{Binding Path=IconImage}"/>
<TextBlock Name="LabelHolder" Text="{Binding Path=Header}"/>
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid>
<TreeView x:Name="tvMain" Height="Auto" Width="Auto" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" />
</Grid>
コードビハインドでは、これを行うだけです
treeView_Expand(sender, e) {
...
t.ItemsSource = ds;
}
JSON 文字列を呼び出して foreach を実行し、計算を行って List を作成し、(ds) を ItemsSource に割り当てるだけです。
オンデマンドで編集
public class TVDataStructure
{
public string Header;
public object Tag;
public ImageSource IconImage;
public bool DoEvent = false;
public override string ToString()
{
return Header;
}
}
ご協力いただきありがとうございます。