public class EventLogView : UserControl
{
private DataGrid dataGrid;
public EventLogView()
{
this.InitializeComponent();
dataGrid = this.FindControl<DataGrid>("EventLogsDataGrid");
this.dataGrid.LoadingRow += new EventHandler<DataGridRowEventArgs>(dataGrid_LoadingRows);
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
void dataGrid_LoadingRows(object sender, DataGridRowEventArgs e)
{
}
}
我想改变每行的颜色为红色,如果第4列的值是“高”。
3条答案
按热度按时间lstz6jyr1#
在“纯”WPF中实现此操作的方法是使用
DataTrigger
定义ItemContainerStyle
:但是,由于Avalonia不支持触发器,因此您可能必须像这样处理
LoadingRow
事件,以编程方式设置Background
属性:qmelpv7a2#
@mm8:谢谢你的提示!我也在寻找同样的答案,所以就从你的建议开始了。我在对行进行排序,或者修改后重新加载内容时遇到了问题。有几行不符合条件,但附加了背景属性。所以我使用样式来附加/分离样式:
zqry0prt3#
也许还有另一种方法可以做同样的事情,但是是在XAML中。老实说,我并没有参与这个探索,但它真的很接近。Avalonia.Xaml.Behaviors的作者Wiesław Šoltés已经发布了一个非常有趣的方法的示例。我试图将它用于DataGrid的行,它几乎成功了:
代码中只有一个问题-绑定不使用DataGridCell的DataContext(ViewModel中ObservableCollection的元素),但它使用整个视图/窗口(ViewModel)的DataContext。
如果有人知道如何在绑定中指定DataGridCell的DataContext而不是View的DataContext,请帮助!