【发布时间】:2017-12-04 14:48:08
【问题描述】:
在 UWP 中,我正在尝试更改工具提示的默认模板。
我已经管理过了,但现在我需要设置工具提示箭头来指出它所属的控件。
我的风格是这样定义的:
<Style TargetType="ToolTip">
<Setter Property="Foreground" Value="White" />
<Setter Property="Background" Value="{ThemeResource SystemControlBackgroundChromeMediumLowBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource SystemControlForegroundChromeHighBrush}" />
<Setter Property="BorderThickness" Value="{ThemeResource ToolTipBorderThemeThickness}" />
<Setter Property="FontFamily" Value="Roboto" />
<Setter Property="FontSize" Value="{ThemeResource ToolTipContentThemeFontSize}" />
<Setter Property="Padding" Value="40,40,40,35"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Grid Background="Transparent">
<Grid
MinWidth="100"
MinHeight="90"
Height="{TemplateBinding Height}"
Width="{TemplateBinding Width}"
Padding="15"
Background="Transparent">
等等等等……
但现在我正在尝试使 UserControl 与 TemplateBinding 属性绑定。
我创建了具有一些依赖属性的 UserControl。 像这样:
public PlacementMode TooltipPlacement
{
get { return (PlacementMode)GetValue(TooltipPlacementProperty); }
set { SetValue(TooltipPlacementProperty, value); CalculateArrowVisibility(); }
}
public static readonly DependencyProperty TooltipPlacementProperty =
DependencyProperty.Register("TooltipPlacement", typeof(PlacementMode), typeof(ArrowDown), null);
CalculateArrowVisibility() 是一种根据 TooltipPlacement 计算箭头位置的方法。
该控件的样式定义如下:
<local:ArrowDown x:Name="arrow" TooltipPlacement="{TemplateBinding Placement}"/>
但它没有绑定,我尝试了其他 TemplateProperties 但也没有运气。
问题出在哪里?
【问题讨论】:
-
Content中的TooltipPlacement="{TemplateBinding Content}"是什么? -
我在复制粘贴时出错...应该是:
-
set { SetValue(TooltipPlacementProperty, value); SetValue(); }中的SetValue()是什么?执行其他操作是否是函数重载? -
即绑定设置属性值后执行的方法。在该方法中,我将放置用于计算箭头可见性的逻辑。
-
据我了解,DataBinding 不适用于
TooltipPlacement。我对吗?另外,在您的问题中添加您的最后一条评论
标签: c# binding uwp dependency-properties templatebinding