ToolTip绑定到依赖项属性的问题

时间:2011-09-13 06:52:28

标签: wpf tooltip

我正面临ToolTips的问题(再次!)..

我的代码如下:

Xaml文件:

<Grid>
        <Button Height="23" Margin="82,0,120,105" Name="button1" VerticalAlignment="Bottom" ToolTip="{Binding Path=Label, Mode=Default}">Button</Button>        
    </Grid>

cs文件:

/// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        Parameter p1;
        System.Timers.Timer aTimer;

        public Window1()
        {
            InitializeComponent();
            p1 = new Parameter();
            p1.Label = "One thing";
            this.DataContext = p1;

            aTimer = new System.Timers.Timer();
            aTimer.Elapsed += new System.Timers.ElapsedEventHandler(aTimer_Elapsed);
            aTimer.Interval = 5000;
            aTimer.Enabled = true;
        }

        void aTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            aTimer.Enabled = false;
            p1.Label = null;
        }        

    }

Parameter类如下:

class Parameter : System.ComponentModel.INotifyPropertyChanged
    {
        #region INotifyPropertyChanged Members

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        #endregion

        private string label = String.Empty;

        public string Label
        {
            get { return label; }
            set
            {
                label = value;
                OnPropertyChanged(new PropertyChangedEventArgs("Label"));
            }
        }

        private void OnPropertyChanged(PropertyChangedEventArgs propertyChangedEventArgs)
        {
            try
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, propertyChangedEventArgs);
                }
            }
            catch (Exception exc)
            {
            }
        }
    }

现在点击按钮后,我得到工具提示“一件事”,但是在5秒后,我得到了一个空的工具提示。因为我将依赖属性设置为null,所以我没想到会有工具提示。

之后,如果我将鼠标悬停在按钮上,我就没有空的工具提示(如预期的那样)。它仅在值的变化期间得到空的工具提示。

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

尝试此操作...将您的Label属性和_label变量更改为object而不是string,即将其用作字符串,但将其声明为{{1 }}。

我猜上面的问题发生是因为object字符串实际上是nullstring.Empty是对象类型。发生的装箱假定空字符串为ToolTip,因此显示空工具提示而不是工具提示。但如果string.empty是对象tyupe,则null值将表示不Label

如果您的案例中不允许更改ToolTip属性的建议数据类型,那么请使用Label绑定中的Converter为空字符串返回null对象。

如果有帮助,请告诉我。