【问题标题】:DataGrid template editDataGrid 模板编辑
【发布时间】:2012-12-04 12:42:04
【问题描述】:

我用组合框创建了数据网格(从数据库读取数据),但需要解决一些问题,也许你们中的某个人可以帮助我;)

首先,我在 dataGrid 中使用了分组(按名称 Wzór# 分组),每次我想添加新元素时,它都会显示在底部: http://i45.tinypic.com/2l8yarp.png[^] 是否有可能用这个(新的)项目创建类似“新组”的东西?例如像: Wzór 1 Wzór1 涅别斯基 22 1 1 1 Wzór1 切尔沃尼 23 1 1 1 巫师 2 Wzór 2 查尔尼 55 1 1 1 添加新项目 ComboBox ComBox ComboBox TextBox TextBox TextBox(与图中标注的完全相同)。我的意思是这样的想法: http://i45.tinypic.com/2s0ms90.png[^]

我发现的第二个问题是,当我添加新项目并更改 ComboBox1、2 或 3 中的任何内容,然后当我开始编辑任何文本框时,组合框中的所有值都消失了 - 有什么方法可以解决它?

这里是源代码(其实它不是很复杂,我有 3 种方法,从数据库中填充 combobox1、combobox2 和 combobox3,然后在单击按钮后创建新的产品项,我添加到列表中):

wzoryCount = wzoryCB.Items.Count;
            List<Produkt> Produkty = new List<Produkt>();
           // for (int i = 0; i < wzoryCount; i++)
            //{

                Produkt p = new Produkt { wzor = "", kolor = "", cena = 0, rozmiar = "", indeks = "", kod = "" };
                Produkty.Add(p);
           // }

            dataGrid1.ItemsSource = Produkty;
            ListCollectionView collection = new ListCollectionView(Produkty);
            collection.GroupDescriptions.Add(new PropertyGroupDescription("wzor"));
            dataGrid1.ItemsSource = collection;

我想,我需要在数据网格的 beginEdit 方法中做一些事情,但是当我把消息框放在那里时,当我在组合框中更改任何内容时它不会出现,但在我更改文本框时会出现。

感谢您的帮助!

【问题讨论】:

    标签: wpf templates datagrid


    【解决方案1】:

    首先,您需要 ObservableCollection,而不是 List。 其次,您可以在 xaml 中执行此操作:

    <DataGrid ItemsSource="{Binding Produkty}">
        <DataGrid.Columns>
    
            <DataGridTemplateColumn Header="wzor">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding wzor}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
            <DataGridTemplateColumn Header="kolor">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding kolor}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
            <DataGridTemplateColumn Header="cena">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding cena}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
            <DataGridTemplateColumn Header="rozmiar">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding rozmiar}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
            <DataGridTemplateColumn Header="indeks">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding indeks}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
            <DataGridTemplateColumn Header="kod">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding kod}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
        </DataGrid.Columns>
    </DataGrid>
    

    【讨论】:

    • 好的,我尝试使用 Collection,但不幸的是第二个对我不起作用。我之前有这个代码:
    【解决方案2】:

    评论太长,所以在这里发布。这是我在 xaml 中使用的代码,所以我猜你的答案不起作用

        <DataGrid.Columns>
    
            <!--<DataGridTextColumn Header="Wzór" Binding="{Binding Path=wzor}"  ></DataGridTextColumn>-->
    
            <DataGridTemplateColumn Header="Wzór">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{StaticResource wzoryList}" SelectedItem="{Binding wzor}"></ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
    
    
            <DataGridTemplateColumn Header="Kolor">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{StaticResource koloryList}" SelectedItem="{Binding kolor}"></ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
            <DataGridTemplateColumn Header="Rozmiar">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{StaticResource rozmiarList}" SelectedItem="{Binding rozmiar}"></ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    
    
            <DataGridTextColumn Header="Indeks" Binding="{Binding Path=indeks}" ></DataGridTextColumn>
            <DataGridTextColumn Header="Kod" Binding="{Binding Path=kod}"></DataGridTextColumn>
            <DataGridTextColumn Header="Cena" Binding="{Binding Path=cena}" ></DataGridTextColumn>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多