Announcement

Collapse
No announcement yet.

DataGrid fehlerhaftes Verhalten beim scrollen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataGrid fehlerhaftes Verhalten beim scrollen

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