ToolTip用ElementName绑定无效
问题详情:给控件元素的ToolTip属性使用ElementName进行绑定,源是一个INotifyPropertyChanged的属性Info,用来显示内容时,运行时不起效果(指没有改变内容,或者内容为空)。代码如下:
原因:Window是一棵逻辑树,ToolTip是另一棵逻辑树。Label控件Content属性的ElementName绑定所引用的"MainWindow",它只会在ToolTip的逻辑树中搜索,但是无法访问到Window逻辑树。因此,在运行时,自然就无法得到Info的值。
<Window x:Name="MainWindow">
<Label>
<Label.ToolTip>
<Label Content="{Binding ElementName=MainWindow, Path=Info, Mode=OneWay}"/>
</Label.ToolTip>
</Label>
原理:x:Reference不使用运行时的逻辑树搜索,是在XAML文件生成元素的时候进行操作。
<Window x:Name="MainWindow">
<Label>
<Label.ToolTip>
<Label Content="{Binding Source={x:Reference Name=MainWindow}, Pa