WPF将DataGridTextColumn的绑定信息作为字符串到达

时间:2016-07-10 16:36:24

标签: c# wpf xaml binding datagridtextcolumn

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

1 个答案:

答案 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所涉及的属性。