如何在dataTemplate中为文本块动态设置工具提示
本文关键字:动态 设置 工具提示 文本 dataTemplate | 更新日期: 2023-09-27 18:20:01
列表框中的每个条目都有下面的模板。如何以编程方式设置Price和ProductName的工具提示?我可以使用哪些ID请注意,我想区分两个项目:价格和ProductName,并为每个项目显示不同的工具提示,即使它们属于列表框中的同一条目
如您所见,在xaml中设置工具提示(如下面的Price所示)非常简单。但我需要动态设置的灵活性。谢谢
<DataTemplate>
<DockPanel >
<TextBlock DockPanel.Dock="Left" Text = "{Binding ProductName}" />
<TextBlock Text=" " />
<TextBlock Text = "{Binding Price}" ToolTip="Price" />
</DockPanel>
</DataTemplate>
您可以绑定工具提示(几乎可以绑定任何属性),这样当您分配给属性时,UI就会更新。你最好的选择是在某个地方建立一个属性(比如拥有你的Price属性的对象),并与该生物绑定。只需确保使用DependencyProperty
或INotifyPropertyChanged
即可。
<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";
}