Diskuze: WPF dataGrid1.SelectedIndex (barva)

C# .NET .NET (C# a Visual Basic) WPF dataGrid1.SelectedIndex (barva) American English version English version

Avatar
rwn
Člen
Avatar
rwn:

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

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
rwn
Člen
Avatar
Odpovídá na Petr Domes (petrds)
rwn:

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 rwn
Petr Domes (petrds):

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  +1 20.4.2014 11:35
Avatar
rwn
Člen
Avatar
Odpovídá na Petr Domes (petrds)
rwn:

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
rwn
Člen
Avatar
Odpovídá na rwn
rwn:

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 rwn
Petr Domes (petrds):

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
rwn
Člen
Avatar
Odpovídá na Petr Domes (petrds)
rwn:

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