更改XAM数据展示器的行的背景颜色

时间:2011-09-12 13:05:03

标签: c# wpf infragistics

是否有任何代码可以从Datapresenter事件访问SelectedItemChanged的行以编程方式更改行的背景颜色?

有些事情:

presenterName.FieldLayouts[0].Fields[7].Visibility = Visibility.Collapsed;

这段代码只是折叠一列,但我需要类似的东西来改变一个特定的行。

3 个答案:

答案 0 :(得分:2)

为此,您需要创建样式并使用DataTrigger来控制记录的颜色。您的样式的目标可以是DataRecordCellArea或DataRecordPresenter。如果您的数据没有公开您可以为此目的绑定的属性,那么您可以使用Record的Tag属性。

以下是一个示例,说明如何根据记录中单元格的值有条件地设置记录的背景: http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.Aspx?ArticleID=10103

答案 1 :(得分:0)

我认为您可能需要沿着树走下去,因为默认情况下不会公开 DataGridCellsPresenter

private void DataGrid_SelectionChanged(object sender,SelectionChangedEventArgs e)
        {
            DataGridRow Row = 
                (DataGridRow)((DataGrid)sender).SelectedItem;

            DataGridCellsPresenter CellsPresenter =
                GetVisualChild<DataGridCellsPresenter>(Row);
        }

public static T GetVisualChild<T>(Visual parent) where T : Visual
        {
            T child = default(T);
            int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
            for (int i = 0; i < numVisuals; i++)
            {
                Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
                child = v as T;
                if (child == null)
                {
                    child = GetVisualChild<T>(v);
                }
                if (child != null)
                {
                    break;
                }
            }
            return child;
        }

答案 2 :(得分:-1)

我将SelectionChanged事件用于DataGrid。

    private void myDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        int index = myDataGrid.SelectedIndex;
        DataGridRow row = myDataGrid.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
        row.Background = Brushes.Red;   
    }

这只会将行的背景颜色更改为红色。

编辑:刚刚注意到你在谈论Infragistics的Datapresenter。不知道这是否适用于该控件。可能在他们的论坛上要问一些事情。