IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
rawen
Člen
Avatar
rawen:18.4.2014 18:32

Zdravím, zkoušel jsem si takovou věc, žebych si označoval položky v datagridu skrz jinou kontrolku. Problém ale nastává v tom, že pokud si něco označuju skrz dataGrid1.Selec­tedIndex, tak se mě u té položky zbarví pozadí na něco ve stylu WhiteSmoke. Já bych ovšem chtěl jinou barvu, ale nastavení pro SelectedIndex něco jako barva pozadí nikde nemůžu najít. V XAML to mám takto, ale to mě řeší jen kliknutí na samotný datagrid:

<DataGrid.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>
</DataGrid.Resources>

Jak se to dá udělat tak, aby selectedIndex popřípadě selectedItem se zbarvoval tak jak bych si nastavil? Nenapadá někoho něco?

Odpovědět
18.4.2014 18:32
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Petr Domes (petrds):19.4.2014 11:16

mělo by to jít vyřešit nějakým stylem pro pozadí buňky(cell) a tento styl aplikovat pomocí triggeru.

takto řeším v datagridu neoznačování buňky, do které se kliklo.

<Style  TargetType="{x:Type DataGridCell}"   >
    <Setter Property="BorderThickness" Value="0"/>
</Style>
 
Nahoru Odpovědět
19.4.2014 11:16
Avatar
rawen
Člen
Avatar
Odpovídá na Petr Domes (petrds)
rawen:19.4.2014 14:07

Já jsem to zkusil takhle, ale nevim proč to vůbec nic nedělá:

<DataGrid.SelectedItem>
    <Style TargetType="DataGridCell">
        <Setter Property="Background" Value="Red"></Setter>
    </Style>
</DataGrid.SelectedItem>

Přitom mě to přijde, žeby to nějak takto mělo být napsané správně.

Nahoru Odpovědět
19.4.2014 14:07
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Odpovídá na rawen
Petr Domes (petrds):20.4.2014 11:35

jak jsem psal, musí se použít trigger :) takhle to funguje

<Style TargetType="DataGridCell">
      <Style.Triggers>
          <Trigger Property="IsSelected" Value="True">
              <Setter Property="Background" Value="Red" />
          </Trigger>
      </Style.Triggers>
</Style>
Editováno 20.4.2014 11:35
 
Nahoru Odpovědět
20.4.2014 11:35
Avatar
rawen
Člen
Avatar
Odpovídá na Petr Domes (petrds)
rawen:20.4.2014 14:10

Super, dík, takhle to označování fakt jede. :)) Akorát tam teď vznikly dva problémy, když si teď něco označím, tak se mě obsah buňky posune doleva-nahoru asi o 2px, a taky se mě neoznačuje úplně celý řádek - některé buňky to přeskakuje (přesněji ty, u kterých se mění barva textu)

Nahoru Odpovědět
20.4.2014 14:10
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
rawen
Člen
Avatar
Odpovídá na rawen
rawen:20.4.2014 14:31

Kupodivu ale ty přeskočené buňky se vybarvují tou základní šedo-bílou barvou pro ty "selectované" jak předtím o_O

Nahoru Odpovědět
20.4.2014 14:31
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Odpovídá na rawen
Petr Domes (petrds):20.4.2014 16:07

Chceš selektovat celý řádek předpokládám? Mě to funguje dobře, ten styl jsem si dal do App.xaml . Uložíš někam ten tvůj projekt? Mrknul bych se na to.

 
Nahoru Odpovědět
20.4.2014 16:07
Avatar
rawen
Člen
Avatar
Odpovídá na Petr Domes (petrds)
rawen:20.4.2014 17:41

Už jsem to vyřešil. :) To, že se mě obsah buňek posouval doleva-nahoru bylo tím, že jsem měl

<Setter Property="BorderThickness" Value="0"/>

umístěno v Triggeru. A To, že mě barva pozadí ignorovala některé buňky bylo tím, že jsem v těch buňkách měl už jednou

<Style TargetType="DataGridCell">

kterýma jsem nastavoval jen barvu textu a nenapadlo mě to, že když tam není vyplněná barva pozadí, tak jí bere jako základní v každém případě, ať je definovaná jinde nebo není. Takže jsem do těch buněk přidal jen Trigger cos mě poradil. :) Ted už to jede podle představ, takže móc děkuju. :))

Editováno 20.4.2014 17:43
Nahoru Odpovědět
20.4.2014 17:41
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Odpovídá na rawen
Petr Domes (petrds):20.4.2014 19:44

jo rád jsem poradil :)

 
Nahoru Odpovědět
20.4.2014 19:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.