Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF树视图项目模板_C#_Wpf - Fatal编程技术网

C# WPF树视图项目模板

C# WPF树视图项目模板,c#,wpf,C#,Wpf,我的treeview运行时充满了treeview项 所有父树视图项的标记属性均为null。所有子树eviewItem(没有其他子树)都具有标记属性=对象 我想为treeviewitem.tag对象(!=null)显示不同的布局(单选按钮和文本块),但我不明白treeview项是如何工作的。。。我尝试使用分层和数据模板,但失败了 <TreeView.ItemTemplate> <HierarchicalDataTemplate DataType="{x:Type Tree

我的treeview运行时充满了treeview项

所有父树视图项的标记属性均为null。所有子树eviewItem(没有其他子树)都具有标记属性=对象

我想为treeviewitem.tag对象(!=null)显示不同的布局(单选按钮和文本块),但我不明白treeview项是如何工作的。。。我尝试使用分层和数据模板,但失败了

<TreeView.ItemTemplate>
    <HierarchicalDataTemplate DataType="{x:Type TreeViewItem}">
        <StackPanel Orientation="Horizontal">
            <RadioButton></RadioButton>
            <TextBlock Text="{Binding Path=Header}"></TextBlock>
        </StackPanel>
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

您不能在XAML中简单地执行if和else。因此,您只能访问类型。因此,您需要做的是基于
TreeViewItem
的原始类型创建3种不同的类型,如:

class RadioTreeViewItem:TreeViewItem{}
class GeneralTreeViewItem:TreeViewItem{}
然后使用
DataTemplate
为不同的元素类型声明不同的数据模板或视图,如下所示:

<TreeView.ItemTemplate>
    <HierarchicalDataTemplate DataType="{x:Type TreeViewItem}">
        <StackPanel DataContext={Binding}>
        <DataTemplate DataType="{x:Type GeneralTreeViewItem}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path=Header}"></TextBlock>
            </StackPanel>
         </DataTemplate>
         <DataTemplate DataType="{x:Type RadioTreeViewItem}">
            <StackPanel Orientation="Horizontal">
                <RadioButton></RadioButton>
                <TextBlock Text="{Binding Path=Header}"></TextBlock>
            </StackPanel>
         </DataTemplate>
        </StackPanel>
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>


当然,您需要使用这些新类型创建树,但最终您的树将与
列表

是同一个对象。您如何用数据“填充”树视图?请发布此代码。此代码不起作用(可视树只能设置一次)请发布将项目分配到树的位置的代码。此外,我已将内部数据模板包装在堆栈面板中。您在分配其项时也会这样做吗?我在运行时分配项。可以在执行期间添加/删除TreeView项