【问题标题】:WPF Combobox displaying hierarchical data显示分层数据的 WPF 组合框
【发布时间】:2010-12-26 15:25:05
【问题描述】:

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

类别

  • 类别标识
  • 姓名
  • 父ID

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

如何将它绑定到 WPF 中的组合框,以便子元素根据每个级别缩进?

【问题讨论】:

  • 你能举例说明你的意思吗? ASCII 绘图?在 MSPAINT 中绘制一些东西?
  • 也许是一个带树的数据模板?
  • 我更喜欢组合框,否则树会浪费空间,尤其是在小型触摸屏应用程序上。我可以以分层方式取回数据,我只需要在某个字段设置为某个值时以某种方式缩进或更改行。例如,我可以添加一列来显示每个元素所在的级别。例如1、2、3。组合框中有没有办法根据数据中列的值更改行的格式?

标签: c# wpf binding


【解决方案1】:

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 属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2010-12-07
    • 1970-01-01
    • 2020-05-24
    • 2012-04-04
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多