【发布时间】:2013-10-02 03:04:44
【问题描述】:
我在将 XAML 转换为代码隐藏时遇到问题。
我有这个:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding state}" Value="True">
<Setter Property="Background" Value="GreenYellow"/>
</DataTrigger>
<DataTrigger Binding="{Binding state}" Value="False">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
DataGrid 通过(伪)... new Dataview(ds.Tables[mytable]); 填充
现在我正在尝试在后面的代码中创建样式和触发器 但我遇到了绑定问题。
我有
BrushConverter brushConverter = new BrushConverter();
Style setcolor = new Style();
setcolor.TargetType = typeof(DataGridRow);
DataTrigger setgreen = new DataTrigger();
setgreen.Binding = new Binding("state");
setgreen.Value = true;
setgreen.Setters.Add(new Setter(DataGrid.RowBackgroundProperty, brushConverter.ConvertFromString(Colors.GreenYellow.ToString())));
setcolor.Triggers.Add(setgreen);
-唉,它不工作
【问题讨论】:
-
你还没有设置
setgreen.Binding。为什么刷转换器?你可以写Brushes.GreenYellow。 -
不知道刷子 - 不如那样做。谢谢。 - 似乎我遗漏了那部分,编辑了问题。
-
我猜你想设置
DataGridRow.BackgroundProperty而不是DataGrid.RowBackgroundProperty。 -
成功了! - 这是一个奇迹:)
标签: wpf xaml styles code-behind datatrigger