主数据中的2 datagridcomboboxcolumns,可以编辑和动态更新

时间:2015-03-08 05:06:38

标签: wpf datagrid itemssource datagridcomboboxcolumn

我的想法是我有LoadGroup和LoadCase。它们可以由用户添加或删除。但是loadcase必须是loadgroup的子代。

我制作了2个datagridcombocolumns。我试图让第二个(detialed)datagridcombocolumn根据第一列中选​​定的load-group动态更新itemssouce。我找了一会儿。但我无法找到一个相对简单的解决方案来使我的数据模型工作。

数据模型是:

public class LoadList
{
    public int ID { get; set; }
    public string Name { get; set; }
    public ObservableCollection<LoadList> Children { get; set;}

    public LoadList() 
    {
        Children = new ObservableCollection<LoadList>();            
    }
}

ViewModel 是:

{
        ObservableCollection<LoadList> loadgrouplist = new ObservableCollection<LoadList>();
        DG_test.ItemsSource = loadgrouplist;


}

我将一些示例数据放入了viewmodel。

 loadgrouplist.Add(new LoadList { ID = 2, Name = "Load Group 1" });
        loadgrouplist.Add(new LoadList { ID = 2, Name = "Load Group 2" });
        loadgrouplist[0].Children.Add(new LoadList{ID =3 , Name = "Load Case 1"});
        loadgrouplist[0].Children.Add(new LoadList { ID = 3, Name = "Load Case 2" });
        loadgrouplist[1].Children.Add(new LoadList { ID = 3, Name = "Load Case 3" });
        loadgrouplist[1].Children.Add(new LoadList { ID = 3, Name = "Load Case 4" });

我尝试过不同类型的方法让这个东西起作用。 我尝试过的最新版本是这样的:   XAML文件

  <DataGrid x:Name="DG_test" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Dads Name" Binding="{Binding Name}" />
                    <DataGridComboBoxColumn x:Name="test_loadgroup" Header="Load Group" DisplayMemberPath="Name" ItemsSource="{Binding Path=Name}" />
                    <mui:DataGridComboBoxColumn x:Name="test_mui_loadgroup" Header="MUI Load Group" DisplayMemberPath="Name" ItemsSource="{Binding Path=Name}" />
                    <DataGridTemplateColumn Header="Group Name">
                        <DataGridTemplateColumn.CellEditingTemplate>
                            <DataTemplate>
                                <ComboBox x:Name="test_loadgroup" Text="{Binding Path=Name}" DataContext="{Binding Path=Name}" DisplayMemberPath="Name" ItemsSource="{Binding}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellEditingTemplate>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Path=Name}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn x:Name="test_loadcase" Header="Child Name">
                        <DataGridTemplateColumn.CellEditingTemplate>
                            <DataTemplate>
                                <ComboBox Text="{Binding Path=Name}" DisplayMemberPath="Name"  ItemsSource="{Binding Path=Children}" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellEditingTemplate>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Path=Name}" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>

我怎样才能让这件事有用? 非常感谢

0 个答案:

没有答案