Ankündigung

Einklappen
Keine Ankündigung bisher.

DataGrid fehlerhaftes Verhalten beim scrollen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DataGrid fehlerhaftes Verhalten beim scrollen

    Hallo

    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
Lädt...
X