WPF中带有文本块的动态工具提示

时间:2016-12-28 06:35:22

标签: c# wpf xaml tooltip textblock

我在textblock wpf中的工具提示有些麻烦。

完成1个任务后如果任务错误,我想用工具提示更新错误信息。 但工具提示在完成时从未显示。请帮我 。 感谢

这里是我的代码 C#代码

if (status == "Error")
            {
                LogCreateSite item = (LogCreateSite)gridLog.Items[rowIndex];
                item.ErrorInfo = "Error";
                DataTemplate template = cellTitle.ContentTemplate;
                Canvas canvas = (Canvas)template.LoadContent();
                TextBlock txtError = (TextBlock)canvas.Children[1];
                ToolTip toolTip = new ToolTip();
                toolTip.Content = "asdfasdf";
                txtError.ToolTip = toolTip;
                txtError.UpdateLayout();
            }

我的Xaml:

<DataTemplate x:Key="error">
            <Canvas Margin="10,15,0,0">
                <!--<Ellipse Fill="#FF5050" Width="12" Height="12">
                </Ellipse>-->

                <Viewbox Width="16" Height="16">
                    <Frame Source="../Icon/Error_16.xaml" />
                </Viewbox>

                <TextBlock Text="Error" Margin="25,-3,0,0">
                </TextBlock>
                <TextBlock Cursor="Hand" Name="txtErrorInfo" ToolTip="{Binding ErrorInfo, Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" FontSize="14" Text="?" Margin="60,-3,0,0" FontWeight="Bold" Foreground="Blue">

                </TextBlock>
            </Canvas>
        </DataTemplate>

2 个答案:

答案 0 :(得分:2)

您需要对工具提示进行绑定,以向用户显示错误/消息。

请通过本教程了解wpf绑定。来自WPF-tutorial的Introduction to WPF data binding

你的XAML应该像这样才能正确绑定。

Name="txtErrorInfo" ToolTip="{binding path=error mode=OneWay UpdateSourceTrigger=PropertyChanged}" 

当您更改应向用户显示的属性时,需要提及modeUpdateSourceTrigger

答案 1 :(得分:1)

更正您的代码,请参阅此示例,了解如何从代码中显示ToolTip

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        ToolTip t = new ToolTip();
        t.Content = DateTime.Now.ToString();
        t.IsOpen = true;
        t.PlacementTarget = txtError;
        t.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom;

        txtError.ToolTip = t;
    }