ich binde dataGrid per itemsSource = dataTable.DefaultView, dannach per codeBehind ändere Hintergrundfarbe eine Zelle. Soweit geht alles gut. Beim scrollen aber die geänderte Hintergrund wandert in eine andere Zelle je nach Scrollrichtung. Weis jemand wie und wieso das passiert.
Window x:Class="WpfApp4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp4"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Height="30" Margin="665,15,0,0" VerticalAlignment="Top" Width="80" Click="Button_Click"/>
<DataGrid x:Name="DataGridTest" Margin="15,85,15,20" CanUserAddRows="False" CanUserResizeRows="False" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Test1" Binding="{Binding Test1}" />
<DataGridTextColumn Width="*" Header="Test2" Binding="{Binding Test2}" />
<DataGridTextColumn Width="*" Header="Test3" Binding="{Binding Test3}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
public partial class MainWindow:Window {
public MainWindow() {
InitializeComponent();
CreateTable();
}
private void Button_Click(object sender, RoutedEventArgs e) {
DataGridRow row = DataGridTest.ItemContainerGenerator.ContainerFromI tem(DataGridTest.Items[1]) as DataGridRow;
DataGridCell cell = DataGridTest.Columns[0].GetCellContent(row).Parent as DataGridCell;
cell.Background = Brushes.Red;
}
private void CreateTable() {
var dt = new DataTable();
string[] Felder;
dt.Columns.Add("Test1");
dt.Columns.Add("Test2");
dt.Columns.Add("Test3");
for(int i = 0; i < 50; i++) {
DataRow dr = dt.NewRow();
string s = "row " + i + " colm 1";
string s1 = "row " + i + " colm 2";
string s2 = "row " + i + " colm 3";
Felder = new string[] { s, s1, s2 };
dr.ItemArray = Felder;
dt.Rows.Add(dr);
}
DataGridTest.ItemsSource = dt.DefaultView;
}
}
mfg
Window x:Class="WpfApp4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp4"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Height="30" Margin="665,15,0,0" VerticalAlignment="Top" Width="80" Click="Button_Click"/>
<DataGrid x:Name="DataGridTest" Margin="15,85,15,20" CanUserAddRows="False" CanUserResizeRows="False" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Test1" Binding="{Binding Test1}" />
<DataGridTextColumn Width="*" Header="Test2" Binding="{Binding Test2}" />
<DataGridTextColumn Width="*" Header="Test3" Binding="{Binding Test3}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
public partial class MainWindow:Window {
public MainWindow() {
InitializeComponent();
CreateTable();
}
private void Button_Click(object sender, RoutedEventArgs e) {
DataGridRow row = DataGridTest.ItemContainerGenerator.ContainerFromI tem(DataGridTest.Items[1]) as DataGridRow;
DataGridCell cell = DataGridTest.Columns[0].GetCellContent(row).Parent as DataGridCell;
cell.Background = Brushes.Red;
}
private void CreateTable() {
var dt = new DataTable();
string[] Felder;
dt.Columns.Add("Test1");
dt.Columns.Add("Test2");
dt.Columns.Add("Test3");
for(int i = 0; i < 50; i++) {
DataRow dr = dt.NewRow();
string s = "row " + i + " colm 1";
string s1 = "row " + i + " colm 2";
string s2 = "row " + i + " colm 3";
Felder = new string[] { s, s1, s2 };
dr.ItemArray = Felder;
dt.Rows.Add(dr);
}
DataGridTest.ItemsSource = dt.DefaultView;
}
}
mfg