0

我是 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>

我想从第一行的绑定信息中获取变量字符串,如“All”、“Name”,以便在图像工具提示绑定中使用。如您所见,第一行的绑定信息在这里是“Model.Name”。我可以使用 Converter 仅获取“名称”字符串,但无法获取该绑定信息。

当我搜索时,我发现了一个使用 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 正在从这个类中获取价值

结果,我的问题就是这个。

如何以字符串形式获取 DataTextColumn 的绑定信息?

预先感谢您的所有答案。

PS:英语不是我的母语。如果我犯了错误,对不起。

PS:我创建了一个示例来展示我想要的。你可以在这里下载:https ://mega.nz/#!oIJXgLxb!eBNqOIdby0UgkKgfqgCOVqYE1O-KwQH7cfEQxk6aCd0

4

1 回答 1

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>

然后您到达当前单元格,然后BindingDataContext.DictionaryItemConverter

但实际上这感觉就像你做的事情太复杂了。也许您可以修改您的问题以显示您的总体目标和 ViewModel 中涉及的属性。

于 2016-07-12T14:03:36.127 回答