WPF - editace DataGridu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

WPF - editace DataGridu – .NET – Fórum – Programujte.comWPF - editace DataGridu – .NET – Fórum – Programujte.com

 

Jirka
~ Anonymní uživatel
305 příspěvků
13. 8. 2013   #1
-
0
-

<DataGrid x:Name="u_table" ItemsSource="{Bin­ding}" AutoGenerateCo­lumns="False" ...>
< DataGrid.Columns>
< DataGridTempla­teColumn Header="Položka" SortMemberPat­h="nazev">
< DataGridTempla­teColumn.CellTem­plate>
< DataTemplate>
< StackPanel Orientation="Ho­rizontal">
< Image Height="18" Source="{Binding image}" />
< TextBlock Margin="5, 0, 0, 0" Text="{Binding nazev}" />
< /StackPanel>
< /DataTemplate>
< /DataGridTem­plateColumn.Ce­llTemplate>
< /DataGridTem­plateColumn>
< DataGridTextColumn Header="Množství" Binding="{Binding mnozstvi}" />
...

Při kliku na položku "množství" ji mohu editovat. Jak udělat abych mohl editovat i "nazev"?
Jsem s WPF začátečník a budu vděčný za jakoukoli pomoc.

Nahlásit jako SPAM
IP: 81.19.5.–
Evzen+2
Návštěvník
14. 8. 2013   #2
-
0
-

Ahoj,

pokud by jsi použil jen DataGridTextColumn, tak by ses nemusel starat o přepínání mezi TextBlockem a TextBoxem.

Já bych to viděl dvěma způsoby.

1) vyhodíš si do DataGridTemplateColumn pouze obrázek (ikonku) a přidáš normálně vedle DataGridTextColumn

2) nadefinuješ si, jak má vypadat položka při editaci pomoci CellEditingTemplate

<DataGrid x:Name="u_table" ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Položka" SortMemberPath="nazev">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Ho­rizontal">
                        <Image Height="18" Source="{Binding image}" />
                        <TextBlock Margin="5, 0, 0, 0" Text="{Binding nazev}" />
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <!-- změna pri editaci -->
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding nazev}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Množství" Binding="{Binding mnozstvi}" />
    </DataGrid.Columns>
</DataGrid>

Klíčové je DataGridTemplateColumn.CellEditingTemplate, kde si v DataTemplate nastavíš vzhled při editaci.

Evžen

Nahlásit jako SPAM
IP: 193.179.183.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý