/ / Edición de plantillas de DataGrid - wpf, templates, datagrid

Edición de plantillas de DataGrid - wpf, templates, datagrid

He creado datagrid con combobox (lectura de datos de DB), pero necesito solucionar algunos problemas, quizás alguien de ustedes pueda ayudarme;)

En primer lugar, utilicé la agrupación en dataGrid (grupo por nombre Wzór #), y cada vez que quiero agregar un nuevo elemento, se muestra en la parte inferior: http://i45.tinypic.com/2l8yarp.png[^] ¿Es posible, crear algo como "nuevo¿Grupo "con este único elemento (el nuevo)? Por ejemplo, como: Wzór 1 Wzór1 niebieski 22 1 1 1 Wzór1 czerwony 23 1 1 1 Wzór 2 Wzór 2 zarras 55 1 1 1 agregar ítem nuevo ComboBox ComBox ComboBox TextBox TextBox TextBox (que son exactamente iguales a los marcados en la imagen). Me refiero a algo así como http://i45.tinypic.com/2s0ms90.png[^]

El segundo problema que encontré es que, cuando estoy agregando un nuevo elemento y cambiando algo en ComboBox1,2 o 3 y luego cuando estoy comenzando a editar cualquier cuadro de texto, todos los valores de combobox desaparecen, ¿hay alguna forma de solucionarlo?

Aquí está el código fuente (en realidad no es muycomplicado, tengo 3 métodos con relleno combobox1, combobox2 y combobox3 de la base de datos, luego, después de hacer clic en el botón im creando un nuevo producto que estoy agregando a la lista):

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;

Supongo que necesito hacer algo en el método beginEdit para datagrid, pero cuando coloco el cuadro de mensaje, no aparece cuando estoy cambiando nada en el cuadro combinado, pero sí cuando estoy cambiando el cuadro de texto.

¡Gracias por cualquier ayuda!

Respuestas

0 para la respuesta № 1

Primero, necesitas ObservableCollection, no List. Segundo puedes hacerlo en 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>

0 para la respuesta № 2

Demasiado tiempo para comentar, así que publícalo aquí. Este es el código que estoy usando en xaml, por lo que su respuesta no funciona, supongo

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