0

アプリケーションにDataGrid複数の列があります。特定のフィールド コンテンツの場合、別の行の前景色を使用する必要があります。LoadingRowイベントで次のコールバックを使用します。

 void userGrid_LoadingRow(object sender, DataGridRowEventArgs e){

            if (e.Row.Item != null){  
                // check some row's field value               
                ...
                // modify row forecolor
                e.Row.Foreground = new SolidColorBrush(Colors.Red);
                ...
            }
        }

しかし、特定の行のフィールドの値を名前またはインデックスで取得する方法は?

4

1 に答える 1

1
   void userGrid_LoadingRow(object sender, DataGridRowEventArgs e)
   {
        var dataGrid = (DataGrid)sender;
        IEnumrable<DataGridRow> rows = dataGrid.Items.Where(r =>  (r.DataContext as YourItemsSourceEntity).SomeProperty == yourCondition)
   }

または、 ItemsSource に条件を追加します。

        public class YourItemsSourceEntity
        {
             public bool IsSomething { get; }
        } 

xaml:

     <DataGrid ItemsSource="{Binding Items}">
        <DataGrid.ItemContainerStyle>
            <Style TargetType="DataGridRow">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsSomething}" Value="True">
                        <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.ItemContainerStyle>                
    </DataGrid>          

以下のコメントについて:これはあなたが何を言っているのですか?

    void userGrid_LoadingRow(object sender, DataGridRowEventArgs e)
   {
        var item = e.Row.DataContext as (YourItemsSourceEntity);
        var id = item.ID ;   
   }
于 2013-10-31T12:58:24.663 に答える