【问题标题】:Value from Binding ElementName producing empty string来自 Binding ElementName 的值产生空字符串
【发布时间】:2015-10-14 05:33:05
【问题描述】:

我有一个 Datagrid,它有一个 DataGridTemplateColumn,其中包含一个 ListView,它的 Itemsource 绑定到一个字符串数组。

在该 ListView 中,我定义了一个 ItemTemplate,因为我希望列表中每个项目的前景取决于条件 - 所以这将应用于 TextBlock。

我希望在 ListView 中的每个项目悬停时显示一个工具提示,因此我在该 TextBlock 中定义了一个工具提示

我要做的是让 Tooltip 使用转换器显示有关特定项目的标题/详细信息(以获取不同列表中项目的索引)。

为此,我需要 Tooltip 来了解 ListView 项,但我似乎无法让它工作。 TextBlock 本身使用 Path=. 检索它,我尝试将 TextBlock 命名为 ListItem 并将其检索为 ElementName 无济于事 - 结果只是空字符串。

这是相关的 xaml(已删除格式属性)。

<ListView.ItemTemplate>
    <DataTemplate>
        <TextBlock x:Name="ListItem" Text="{Binding Path=.}" Foreground="{Binding RelativeSource={RelativeSource Self}, Path=Text, Converter={StaticResource ConvertItemToColour}}">
            <TextBlock.ToolTip>
                <ToolTip>
                    <StackPanel Orientation="Vertical">
                        <Label>
                            <TextBlock Text="{Binding ElementName=ListItem, Path=Text, Converter={StaticResource ConvertItemToTitle}}"/> <!-- Item Title -->
                        </Label>
                        <Label>
                            <TextBlock/> <!-- Item Description -->
                        </Label>
                    </StackPanel>
                </ToolTip>
            </TextBlock.ToolTip>
        </TextBlock>
    </DataTemplate>
</ListView.ItemTemplate>

【问题讨论】:

    标签: c# wpf xaml listview elementname


    【解决方案1】:

    ToolTip、like Popup 不是主视觉树的一部分,因此 ElementName 和 RelativeSource 绑定都不会超出 ToolTip 但 DataContext 内 ToolTip 应该仍然与 for 相同ListViewItem

    <ToolTip>
       <StackPanel Orientation="Vertical">
          <Label>
             <TextBlock Text="{Binding Path=., Converter={StaticResource ConvertItemToTitle}}"/>
          </Label>
       </StackPanel>
    </ToolTip>
    

    Text="{Binding Path=.}" 应该在ToolTip 中为您提供与DataTemplate 中相同的结果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      相关资源
      最近更新 更多