繁体   English   中英

如何在dataTemplate中为文本块动态设置工具提示?

[英]How to set tooltip dynamically for textblock in dataTemplate?

我的列表框中的每个条目都有下面的模板。 如何以编程方式为“价格”和“产品名称”设置工具提示? 我可以使用哪些ID? 请注意,我要区分两个项目:价格和产品名称,并为每个项目显示不同的工具提示,即使它们属于列表框中的同一条目。

如您所见,在xaml中设置工具提示非常简单(如下面的价格所示)。 但是我需要动态设置它的灵活性。 谢谢。

<DataTemplate>
    <DockPanel >
        <TextBlock DockPanel.Dock="Left" Text = "{Binding ProductName}" />
        <TextBlock Text="   " />
        <TextBlock Text = "{Binding Price}" ToolTip="Price" />
    </DockPanel>
</DataTemplate>

您可以绑定工具提示(几乎可以绑定任何属性),以便在分配给属性时,UI会更新。 最好的选择是在某个地方创建一个属性(例如具有Price属性的对象)并绑定到该生物。 只要确保您使用DependencyPropertyINotifyPropertyChanged

<DataTemplate>
    <DockPanel>
       <TextBlock DockPanel.Dock="Left" Text = "{Binding ProductName}" />
       <TextBlock Text="   " />
       <TextBlock Text = "{Binding Price}" ToolTip="{Binding PriceTooltipProperty}" />
    </DockPanel>
</DataTemplate>

您可以使用转换器,转换器接收一种类型的对象,然后可以检查它是什么? 即字符串或数字,并使用所需的工具提示返回字符串。

{Binding Path=Price, Converter={StaticResource ObjectToTooltipConverter}}

然后,您的转换器可能看起来像这样。

public class ObjectToTooltipConverter: IValueConverter {

 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
  if(value is Decimal)
  {
    return "The value was a decimal";
  }
  if(value is String)
  {
    return "The value was a string";

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM