如何使用IValueConverter添加工具提示

时间:2014-03-11 09:19:39

标签: wpf xaml ivalueconverter

我正在寻找使用值转换器为按钮添加工具提示的解决方案。 这是因为此工具提示的某些部分/文本是动态计算的。

例如,我有一个应用程序与一些"可启动"其中的任务以点击任何/所有这些任务的方式启动另一个应用程序。 在此任务列表中,有一个按钮"启动任务"数量取决于数量。选择启动的任务。我只需要显示此按钮的工具提示。就像: "启动任务(2)",这是为两个任务选择的。

有人可以帮忙写一个转换器,然后如何在XAML中绑定它?

更新

之前它是如下所示,但问题是显示的工具提示不符合标准且不清晰可见,所以我想要删除相同和使用的转换器。

<ToolTipService.ToolTip>
                            <ToolTip>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock x:Name="ttlblActivityCount" Text="{Binding LaunchTaskButtonTitle, Source={StaticResource ResourceData}}" />
                                    <TextBlock x:Name="ttlblActivityCountStart"
                                               Margin="2,0,0,0"
                                               Text="("/>
                                    <TextBlock x:Name="tttxtActivityCount" Text="{Binding Path=SelectedActivitiesCount}"/>
                                    <TextBlock x:Name="ttlblActivityCountEnd"
                                               FontWeight="Bold"
                                               Text=")" />
                                </StackPanel>
                            </ToolTip>
                        </ToolTipService.ToolTip>

1 个答案:

答案 0 :(得分:1)

使用StackPanel人工组合一个字符串是你不想做的事情。但是,您没有为此

使用IValueConverter

如果你有SelectedActivitiesCount的属性,并且想要将它的工具提示与一些静态文本和属性绑定,那么一个简单的例子可能是:

<Button Content="Launch Tasks">
  <Button.ToolTip>
    <TextBlock Text="{Binding SelectedActivitiesCount, StringFormat=Launch Tasks({0})}" />
  </Button.ToolTip>
</Button>

^^使用此输出看起来像:“启动任务(2)”其中SelectedActivitiesCount - &gt; 2

如果文本(“启动任务”)也是动态的:

<Button Content="Launch Tasks">
  <Button.ToolTip>
    <TextBlock>
      <TextBlock.Text>
        <MultiBinding StringFormat="{}{0} ({1})">
          <Binding Path="LaunchTaskButtonTitle" Source="{StaticResource ResourceData}" />
          <Binding Path="SelectedActivitiesCount" />
        </MultiBinding>
      </TextBlock.Text>
    </TextBlock>
  </Button.ToolTip>
</Button>

^^使用此输出看起来像:“启动任务(2)”其中SelectedActivitiesCount - &gt; 2,LaunchTaskButtonTitle - &gt;启动任务

选择适合您的方法。