WPF组合框显示分层数据

6

我在数据库中有一个类别表,如下所示。

分类

  • categoryId(类别ID)
  • name(名称)
  • parentId(父级ID)

parentId链接到自身以形成层次结构。

我该如何将其绑定到WPF中的组合框,以便每个级别的子元素都适当缩进?


1
你能提供一个确切的例子吗?ASCII画?在MSPAINT中画点什么? - Alex Shtof
也许可以使用带有树形结构的DataTemplate? - Machinarius
我更喜欢使用组合框,否则树形结构会浪费空间,特别是在小型触摸屏应用程序上。我可以以分层方式获取数据,只需要在某个字段设置为特定值时缩进或更改行即可。例如,我可以添加一列以显示每个元素所在的级别,如1、2、3。在组合框中是否有一种方法可以根据数据中列的值更改行的格式? - Adam
1个回答

7
XAML:
<ComboBox ItemsSource="{Binding YourItems}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Margin="{Binding Level, Converter={x:Static my:MainWindow.LevelToMarginConverter}}" Text="{Binding Name}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

C#:

class MainWindow {
    ......
    class LevelToMarginConverterClass : IValueConverter {
        const int onelevelmargin = 10;
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            int level = (int)value;
            return new Thickness(level * onelevelmargin,0,0,0);
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return null;
        }
    }
    public static IValueConverter LevelToMarginConverter = new LevelToMarginConverterClass();
}

请确保您的类中有 int Levelstring Name 属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接