我是WPF的新手,这可能解释了我这样做的难度。作为我想要做的一个例子,我使用了Xceed的MasterDetial示例应用程序的简化版本,该应用程序将Employees作为Master,并将与每个员工关联的Orders作为Details。 DetailConfigurations正在运行。我正在使用这个例子,因为我需要在更大更复杂的应用程序中使用相同的功能。
我遇到麻烦的地方是尝试在详细信息部分中更改单个DataCell的背景颜色。举例来说,我已经扩展了第一个主(员工)行并返回了一个订单列表。每个订单都有一个ShipCountry字段。如果ShipCountry的值是“波兰”,我想将ShipCountry单元格(仅限该单元格)的背景更改为红色。
尽管存在目标类型的DataCell,但下面对整行进行了处理。我无法弄清楚为什么会这样。我已经根据我在搜索这个问题时发现的事情尝试了许多不同的方法,但没有一个有效。我想我错过了一些明显的东西,这是一个简单的绑定问题,但这就是WPF(以及Xceed网格)的新手阻碍了我。
非常感谢任何帮助!
<xcdg:DataGridControl
x:Name="grid"
AllowDetailToggle="{Binding Source={x:Static local:MainPageParams.Singleton},Path=AllowDetailToggle}"
AutoCreateDetailConfigurations="False"
CellEditorDisplayConditions="None"
EditTriggers="BeginEditCommand,ActivationGesture,ClickOnCurrentCell"
ItemScrollingBehavior="Immediate"
ItemsSource="{Binding Source={StaticResource cvsEmployees}}">
<xcdg:DataGridControl.Resources>
<Style TargetType="{x:Type xcdg:DataCell}">
<Style.Triggers>
<!-- Fieldname not a valid property...
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=ShipCountry}" Value="Poland"/>
<Condition Binding="{Binding Self, Path=FieldName}" Value="ShipCountry"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Red"/>
</MultiDataTrigger>
-->
<!-- This changes the entire row to Red, not just the ShipCountry field-->
<DataTrigger Binding="{Binding Path=ShipCountry}" Value="Poland">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</xcdg:DataGridControl.Resources>
<xcdg:DataGridControl.View>
...
答案 0 :(得分:1)
我认为你的第一个例子的问题是:
Binding="{Binding Self, Path=FieldName}"
这就是我对我的所作所为。我刚刚交换使用你的参数。
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=FieldName}" Value="ShipCountry" />
<Condition Binding="{Binding ShipCountry}" Value="Poland" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Red" />
</MultiDataTrigger>
或者我这样做的另一种方式是在列的datatemplate中:
列声明:
<xcdg:Column Title="Ship Country"
CellContentTemplate="{StaticResource ShipCountryDataTemplate}"
FieldName="ShipCountry" />
<强>的DataTemplate 强>
<DataTemplate x:Key="ShipCountryDataTemplate" DataType="{x:Type dat:Order}">
<TextBlock x:Name="txt"
Text="{Binding}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=xcdg:DataRow, AncestorLevel=1}, Path=DataContext.EmployeeChanged, Mode=OneWay}" Value="True">
<Setter TargetName="txt" Property="Background" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>