3

ユーザーがセルのテキストまたはコンテンツを変更したときに、データグリッド内のセルの色を変更したいと考えています。

私はWPFとC#を使用しています。

私は単純なデータグリッドを持っています:

<DataGrid x:Name="dataGrid1" Grid.RowSpan="2" Margin="5" ItemsSource="{Binding Source=Horreos}" KeyDown="dataGrid1_KeyDown" SelectedCellsChanged="dataGrid1_SelectedCellsChanged"> <DataGrid.Columns > </DataGrid.Columns> </DataGrid> 

このイベント: keydown と selectedcellschange は、セルの色を変更するためのテストです。.cs でセルを変更しようとしましたが、失敗しました。

コンテンツが変更されたときにリリースされるイベントが必要です

4

2 に答える 2

0

動作を設定します。最も簡単な方法はBlendを使用することです。ブログ記事でデータグリッドに対する例を示します:Xaml:WPFまたはSilverlightのDataGridにBlendを使用して可視性の動作を追加する

于 2012-11-06T13:20:36.673 に答える
0

解決済み:

 private void dataGrid1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
        DataGridCell gridCell = null;
        try
        {
            gridCell = GetCell(dataGrid1.SelectedCells[0]);
        }
        catch (Exception)
        {
        }
        if (gridCell != null)
            gridCell.Background = Brushes.Red;

    }
public  DataGridCell GetCell(DataGridCellInfo dataGridCellInfo)
    {
        if (!dataGridCellInfo.IsValid)
        {
            return null;
        }

        var cellContent = dataGridCellInfo.Column.GetCellContent(dataGridCellInfo.Item);
        if (cellContent != null)
        {
            return (DataGridCell)cellContent.Parent;
        }
        else
        {
            return null;
        }
    }

private void MyDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        DataGrid grid = sender as DataGrid;
        e.Row.MouseEnter += (s, args) => Row_MouseEnter(s, grid);
        e.Row.MouseLeave += (s, args) => Row_MouseLeave(s, grid);
    }

    void Row_MouseLeave(object sender, DataGrid grid)
    {
        DataGridRow row = sender as DataGridRow;
        grid.SelectedIndex = -1;
    }

    void Row_MouseEnter(object sender, DataGrid grid)
    {
        DataGridRow row = sender as DataGridRow;
        grid.SelectedIndex = row.GetIndex();

    }

ユーザーが編集を終了すると、セルが赤くなります。

 <DataGrid x:Name="dataGrid1" Grid.RowSpan="2" SelectionUnit="CellOrRowHeader" 
                     Margin="5" ItemsSource="{Binding Source=Source}" LoadingRow="MyDataGrid_LoadingRow"  CellEditEnding="dataGrid1_CellEditEnding">
            <DataGrid.Columns>

于 2012-11-07T09:30:24.977 に答える