繁体   English   中英

WPF 层次数据模板类中的不同属性

[英]WPF Hierarchial Data Template differrent properties in classes

如何使树叶成为类的不同属性的树?

我想得到这样的东西

AMachine
-Wheels
Bmachine
-Years

代码.cs

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new TestViewModel();
        }
    }

    public class TestViewModel
    {
        public ObservableCollection<IBase> Items { get; set; }

        public TestViewModel()
        {
            Items = new ObservableCollection<IBase>();
            Items.Add(new AMachine { Wheels = "3", Name = "AMachine" });
            Items.Add(new BMachine { Years = "2", Name = "BMachine" });
        }
    }
    public interface IBase
    {

    }

    public class AMachine : IBase
    {
        public string Name { get; set; }
        public string Wheels { get; set; }
    }

    public class BMachine : IBase
    {
        public string Name { get; set; }
        public string Years { get; set; }
    }

xml文件

<Grid>
        <TreeView Height="300" Width="300" ItemsSource="{Binding Items}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate DataType="{x:Type self:IBase}" ItemsSource="{Binding Items}">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Name}" />
                    </StackPanel>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
    </Grid>

您在这里不需要分层数据模板,合乎逻辑的是使用普通数据模板和ListBox (以扩展器作为节点?):

<ListBox ItemsSource="{Binding Items}">
    <ListBox.Resources>
        <DataTemplate DataType="{x:Type local:AMachine}">
            <Expander Header="{Binding Name}">
                <TextBlock Text="{Binding Wheels}" />
            </Expander>
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:BMachine}">
            <Expander Header="{Binding Name}">
                <TextBlock Text="{Binding Years}" />
            </Expander>
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM