我有一个在 WPF 中编写的自定义控件,它具有布尔依赖属性:
public static readonly DependencyProperty IsAlertProperty
= DependencyProperty.Register("IsAlert", typeof(bool), typeof(AlertControl),
new FrameworkPropertyMetadata(default(bool),
FrameworkPropertyMetadataOptions.None,
OnIsAlertChanged,
null,
false,
UpdateSourceTrigger.PropertyChanged));
public bool IsAlert
{
get { return (bool)GetValue(IsAlertProperty); }
set { SetValue(IsAlertProperty, value); }
}
在我的 Generic.xaml 中,我有以下 xaml 代码:
<Style TargetType="{x:Type local:AlertControl}">
<Setter Property="Template">
<Setter.Value> ... </Setter.Value>
</Setter>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Visiblity="{Binding Path=IsAlert,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource BooleanToVisiblityConverter}">
<!-- Tooltip content goes here -->
</ToolTip>
</Setter.Value>
</Setter>
<Style />
问题是这似乎不起作用。我使用 Snoop 来监视我的 xaml,并且IsAlert
财产正在适当改变,但如果我深入研究我的AlertControl.ToolTip
,我看到Visiblity
DependencyProperty 存在绑定错误。我也尝试过使用RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:AlertControl}}
,但这也带来了一个具有约束力的问题。我不知道如何诊断这个问题,因为我的输出窗口也没有吐出任何绑定表达式错误。