我有一个WPF应用程序。
我正在尝试为FontSize
中的项目设置Background
和ToolTip
{/ 1}}。
我定义了以下XAML代码段:
DataGrid
我在“MyWindow”背后的代码中定义了以下内容
<DataGridTextColumn Binding="{Binding Foo}"
Header="Foo"
Visibility="Visible"
Width="*">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip" >
<Setter.Value>
<ToolTip Background="{Binding ElementName=MyWindow,Path=TBackground}"
FontSize="{Binding ElementName=MyWindow,Path=TFontSize}" >
<TextBlock Text="{Binding Foo}" />
</ToolTip>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
在运行时,我收到以下错误:
System.Windows.Data错误:4:找不到绑定源 引用'ElementName = MyWindow'。 BindingExpression:路径= TBackground; 的DataItem = NULL; target元素是'ToolTip'(Name ='');目标财产 是'背景'(类型'刷')
System.Windows.Data错误:4:找不到绑定源 引用'ElementName = MyWindow'。 BindingExpression:路径= TFontSize; 的DataItem = NULL; target元素是'ToolTip'(Name ='');目标财产 是'FontSize'(输入'Double')
我在这里错过了哪些绑定过程?
由于
答案 0 :(得分:1)
TFontSize
属性应为double
类型,并返回有效的字体大小&gt; 0:
private double _tFontSize = 20;
public double TFontSize
{
get { return _tFontSize; }
set
{
_tFontSize = value;
NotifyPropertyChanged("TFontSize");
}
}
然后,您可以将Tag
的{{1}}属性绑定到窗口,然后将DataGridCell
和FontSize
属性绑定到窗口的源属性Background
的{{1}}属性:
PlacementTarget
由于Tooltip
位于自己的可视树中,因此无法使用<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Tag" Value="{Binding RelativeSource={RelativeSource AncestorType=Window}}" />
<Setter Property="ToolTip" >
<Setter.Value>
<ToolTip
Background="{Binding Path=PlacementTarget.Tag.TBackground, RelativeSource={RelativeSource Self}}"
FontSize="{Binding Path=PlacementTarget.Tag.TFontSize, RelativeSource={RelativeSource Self}}" >
<TextBlock Text="{Binding Foo}" />
</ToolTip>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
直接绑定到窗口。