是否有任何代码可以从Datapresenter
事件访问SelectedItemChanged
的行以编程方式更改行的背景颜色?
有些事情:
presenterName.FieldLayouts[0].Fields[7].Visibility = Visibility.Collapsed;
这段代码只是折叠一列,但我需要类似的东西来改变一个特定的行。
答案 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。不知道这是否适用于该控件。可能在他们的论坛上要问一些事情。