我是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>
我想从第一行的Binding信息中获取变量字符串,如“All”,“Name”,以便在Image Tooltip Binding中使用。如您所见,第一行的绑定信息是“Model.Name”。我可以使用Converter获得“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>
但正如你所看到的,我一直坚持要获得字符串信息。 BTW,DataContext.Model.Error是一个像Dictionary类一样工作的类,DictionaryItemConverter从这个类中获取值
结果,我的问题是这个。
如何将DataTextColumn的绑定信息作为字符串?
提前感谢您的所有答案。
P.S。:英语不是我的第一语言。如果我弄错了,抱歉。
P.S。:我已经创建了一个样本来展示我想要的东西。您可以在此处下载:https://mega.nz/#!oIJXgLxb!eBNqOIdby0UgkKgfqgCOVqYE1O-KwQH7cfEQxk6aCd0
答案 0 :(得分:0)
<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>
然后您转到当前单元格,然后在Binding
内的DataContext
属性中查找DictionaryItemConverter
。
但实际上,这感觉就像你做的事情太复杂了。也许您可以修改您的问题,以显示您的整体目标和ViewModel所涉及的属性。