Hi MSDN Community,
ich habe ein Umsetzungsproblem bei dem ich Hilfe benötige.
Problemstellung: Ich habe ein Datagrid in WPF bei dem ich mehrere Zeilen habe. Damit man alle ansehen kann, habe ich ScrollViewer.VerticalScrollBarVisibility="Auto" aktiviert und jetzt kann man alle durch"scrollen". Mit einem Button
möchte ich dann selektierte Reihen (und später auch einzelne Zellen) mit einer Farbe versehen. Aktuell habe ich dies mit einem Button-Click Event so gelöst:
private void btn_changeColor_Click(object sender, RoutedEventArgs e)
{
if (mydatagrid.SelectedItems.Count > 0)
{
int [] rowNumbers = new int[mydatagrid.SelectedItems.Count];
int i = 0;
foreach (var item in mydatagrid.SelectedItems)
{
rowNumbers[i] = mydatagrid.Items.IndexOf(item);
i++;
}
// color
foreach (int index in rowNumbers)
{
DataGridRow dgr = (DataGridRow)mydatagrid.ItemContainerGenerator.ContainerFromIndex(index);
dgr.Background = new SolidColorBrush(System.Windows.Media.Color.FromArgb(100, 100, 100, 100));
}
}
}
Die Reihe wird wie gewollt farbig gemacht. Jedoch wenn ich jetzt scrolle und die farbig markierte Zeile außerhalb des Sichtbereiches kommt, dann springt meine Farbe von der Reihe! (scroll ich nach unten und die Zeile geht oben aus dem sichtbaren Bereich,
dann wird die unterste Zeile farbig. Die Zuordnung passt somit gar nicht mehr)
Hat jemand hierfür eine Lösung? Ich habe bereits schon solche Lösungen über xaml gesehen, sodass er eine Zeile farbig markiert wenn ein gewisser Inhalt vorhanden ist. Aber dafür wollte ich jetzt kein extra Column bauen der dann sowas aussagt wie "färbe
die Zeile". Außerdem wenn ich später nur Zellen farbig mache, geht das dann auch nicht mehr.
Ich hoffe auf eure Hilfe.
Vielen Dank schon mal für euer Bemühen.
Liebe Grüße
DontKnow