0

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

首先,我在dataGrid中使用了分组(按名称Wzór#分组),每次我想添加新元素时,它都会显示在底部:http: //i45.tinypic.com/2l8yarp.png [^] 是吗可能,用这个(新的)项目创建类似“新组”的东西?例如: Wzór 1 Wzór1 niebieski 22 1 1 1 Wzór1 czerwony 23 1 1 1 Wzór 2 Wzór 2 czarny 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 方法中做一些事情,但是当我把消息框放在那里时,当我在组合框中更改任何内容时它不会出现,但在我更改文本框时会出现。

谢谢你的帮助!

4

2 回答 2

0

首先,您需要 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>
于 2012-12-04T12:54:49.293 回答
0

太长的评论,所以生病在这里发布。这是我在 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>
于 2012-12-04T13:10:07.163 回答