WPF 以字符串形式访问 DataGridTextColumn 的绑定信息
本文关键字:DataGridTextColumn 绑定 信息 访问 字符串 WPF | 更新日期: 2023-09-27 17:56:17
我是WPF的新人。我卡在 XAML 的某个地方。此 XAML 代码正常工作:
<DataGridTextColumn Binding="{Binding Model.Name, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Value="False"
Binding="{Binding DataContext.Model.Error[All],
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGridRow}},
Converter={StaticResource IsNull}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border>
<Grid>
<ContentPresenter x:Name="_cp" />
<Image Source="{DynamicResource Img.Warning}"
ToolTip="{Binding DataContext.Model.Error[Name],
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGridRow}}" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
我想从第一行的绑定信息中获取"全部"、"名称"等变量字符串,以便在图像工具提示绑定中使用。如您所见,第一行的绑定信息在此处为"Model.Name"。我可以使用转换器只获取"名称"字符串,但我无法访问该绑定信息。
当我搜索时,我发现了使用MultiBinding的建议,我编写了以下代码:
<DataGridTextColumn Binding="{Binding Model.Name, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Value="False">
<DataTrigger.Binding>
<MultiBinding>
<MultiBinding.Converter>
<conv:DictionaryItemConverter />
</MultiBinding.Converter>
<Binding Path="DataContext.Model.Error"
RelativeSource="{RelativeSource FindAncestor,
AncestorType={x:Type DataGridRow}}" />
<Binding Path="?????" RelativeSource="?????" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border>
<Grid>
<ContentPresenter x:Name="_cp" />
<Image Source="{DynamicResource Img.Warning}">
<Image.ToolTip>
<Binding>
?????
</Binding>
</Image.ToolTip>
</Image
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
但如您所见,我一直坚持获取字符串信息。顺便说一句,DataContext.Model.Error 是一个像字典类一样工作的类,DictionaryItemConverter 从这个类中获取值
。结果,我的问题是这样的。
如何以字符串形式访问数据文本列的绑定信息?
提前感谢您的所有答案。
PS:英语不是我的第一语言。如果我犯了错误,对不起。
PS:我创建了一个示例来显示我想要的内容。您可以在此处下载: https://mega.nz/#!oIJXgLxb!eBNqOIdby0UgkKgfqgCOVqYE1O-KwQH7cfEQxk6aCd0
你可以试试这个:
<DataTrigger Value="False">
<DataTrigger.Binding>
<MultiBinding>
<MultiBinding.Converter>
<conv:DictionaryItemConverter />
</MultiBinding.Converter>
<Binding Path="DataContext.Model.Error"
RelativeSource="{RelativeSource FindAncestor,
AncestorType={x:Type DataGridRow}}" />
<Binding RelativeSource="{RelativeSource FindAncestor,
AncestorType={x:Type DataGridCell}}" />
</MultiBinding>
</DataTrigger.Binding>
然后,您到达当前单元格,然后在DictionaryItemConverter
中查找DataContext
属性的Binding
。
但实际上,这感觉就像你在做一些太复杂的事情。也许您可以修改您的问题以显示您的总体目标和 ViewModel 上涉及的属性。