【问题标题】:Xaml multi-bind ToolTipXaml 多绑定工具提示
【发布时间】:2016-07-10 09:17:40
【问题描述】:

我有一个DataGrid,其中包含 DataRows 列表作为其ItemSource。我希望每个单元格都有一个 ToolTip 的 2 个 DataCell 值,所以我在 ToolTipService.ToolTip 对象上使用了 MultiBinding。转换器返回当前数据(作为字符串),但ToolTip 显示TextBlock 的系统名称。我正在尝试执行here 中的操作,但结果是一样的:它返回TextBlock 系统名称,但不是我期望的值。

知道我错过了什么吗?

提前致谢。

XAML:

<TextBlock Padding="5,0,5,0" HorizontalAlignment="Center" VerticalAlignment="Center"                                                      
Text="{Binding Path=[1][cell_value], Converter={StaticResource Converter1}}" FlowDirection="LeftToRight">
<ToolTipService.ToolTip>
    <TextBlock>
        <TextBlock.Text>
            <MultiBinding StringFormat="F {0}{1}" Converter="{StaticResource Converter2}">
                <Binding Path="[1][updted_by]" />
                <Binding Path="[1][v_date]" />
            </MultiBinding>
        </TextBlock.Text>
    </TextBlock>
</ToolTipService.ToolTip>

转换器:

public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    try
    {
        int v = 0;
        if (values[0] == null)
            return string.Empty;

        int.TryParse(values[0].ToString(), out v);
        if (v < 1)
            return string.Empty;

        string result1 = string.Empty;
        string result2 = string.Empty;

        result1 = ManageBL.GetUserNameStringById((int)values[0]);

        // now convert the date
        if (values[1] == null || values[1] == DBNull.Value)
            return Binding.DoNothing;

        DateTime dt = DateTime.MinValue;
        DateTime.TryParse(values[1].ToString(), out dt);

        if (dt == DateTime.MinValue || dt == DateTime.Parse("01/01/1900"))
        {
            return null;
        }

        result2 = dt.ToShortDateString();

        return result1 + result2;
    }
    catch (Exception)
    {
        return Binding.DoNothing;
    }
}

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    尝试直接将 MultiBinding 设置为 Tooltip 值

    <ToolTipService.ToolTip>
        <MultiBinding StringFormat="F {0}{1}" Converter="{StaticResource Converter2}">
            <Binding Path="[1][updted_by]" />
            <Binding Path="[1][v_date]" />
        </MultiBinding>
    </ToolTipService.ToolTip>
    

    根据reference

    【讨论】:

      猜你喜欢
      • 2016-04-03
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      • 2012-05-21
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多