![](/img/trans.png)
[英]How to Binding Combobox in DataGridTextColumn in Datatgrid WPF Programmatically
[英]WPF DataGridTextColumn binding and style
这是交易:为DataGrid设置DataGridTextColumn的文本块的样式。 我需要通过将文本块的值与另一个绑定的值进行比较来格式化文本块。
我想要实现的是这样的:
<Style x:Key="ExpeditionerCellStyle" BasedOn="{StaticResource RightAlignStyle}" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=BEST}" Value="{RelativeSource Mode=Self}">
<Setter Property="Background" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
这是不可能的,因为Datatrigger的值不能是相对源。
所以我尝试了多重绑定
<Style x:Key="ExpeditionerCellStyle" BasedOn="{StaticResource RightAlignStyle}" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource IsValueEqualParameterConverter}">
<Binding Path="BEST" />
<Binding RelativeSource="{RelativeSource Mode=Self}" />
</MultiBinding>
</DataTrigger.Binding>
</DataTrigger>
</Style.Triggers>
</Style>
运气不好:textblock Text属性为空,可能是因为在执行实际绑定之前应用了样式。
我没有其他想法了。
请帮我!
我不确定这是否行得通,但是我注意到您忘记在MultiConverter
示例中指定Binding.Path
了……尝试以下操作:
<Style x:Key="ExpeditionerCellStyle" BasedOn="{StaticResource RightAlignStyle}" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource IsValueEqualParameterConverter}">
<Binding Path="BEST" />
<Binding Path="Text" RelativeSource="{RelativeSource Mode=Self}" />
</MultiBinding>
</DataTrigger.Binding>
</DataTrigger>
</Style.Triggers>
</Style>
如果您只想根据文本块的内容更改文本块的样式,为什么不只向文本块背景添加出价,并使用转换器检查文本的内容?
换句话说,将文本和背景都绑定到同一源,并使用具有背景的转换器,并且转换器中的内容与内容匹配并返回正确的背景样式。
如果您需要其他事项,请发表评论,以便我们更好地了解问题所在。
我结束了对代码的修改。 我不依赖该单元格的值,而是在字段“ BEST”中传递了该列的名称。 然后使用转换器,检查“当前”文本块(由@Sheridan建议)-> DatagridCell->列标题是否匹配,我更改此文本块的样式。
感谢大家!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.