似乎这个没有开火的DataTrigger是经常性的,不幸的是,我没有找到任何问题的答案。 我使用依赖属性来处理我的窗口
关闭它
隐藏它
显示
可以直接从Window本身调用操作,也可以通过Publisher模式从NotifyIcon调用操作 问题是:操作的调用在一段时间后不会触发任何事情(取决于我之前的操作)。
例如,如果我先关闭窗口 - >确定
如果我隐藏窗口,然后显示它(这两个都有效),然后关闭它 - >不行,没有任何反应。
窗口中的代码:
<Window.Resources>
<Style x:Key="WindowBehaviourStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding CloseSignal}" Value="true">
<Setter Property="Behaviours:WindowBehaviour.Action" Value="Close"/>
</DataTrigger>
<DataTrigger Binding="{Binding HideSignal}" Value="true">
<Setter Property="Behaviours:WindowBehaviour.Action" Value="Hide"/>
</DataTrigger>
<DataTrigger Binding="{Binding ShowSignal}" Value="true">
<Setter Property="Behaviours:WindowBehaviour.Action" Value="Show"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
依赖项属性的代码:
public static readonly DependencyProperty ActionProperty =
DependencyProperty.RegisterAttached(
"Action",
typeof(BehaviourType),
typeof(WindowBehaviour),
new UIPropertyMetadata(BehaviourType.None,OnAction));
private static void OnAction(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue is BehaviourType)
{
Window window = GetWindow(sender);
BehaviourType behaviourType=((BehaviourType)e.NewValue);
if (window != null)
{
if (behaviourType == BehaviourType.Close)
window.Close();
else if (behaviourType == BehaviourType.Hide)
window.Hide();
else if (behaviourType == BehaviourType.Show)
window.Show();
}
}
}
我可以说方法&#34; OnAction&#34;当问题发生时,根本不会被调用。
但是我不知道(我不知道如何测试它),如果问题来自对视图的调用,或者来自ActionProperty的调用。 考虑到我的研究,我似乎应该每次重新启动依赖属性,但我不知道如何,如果这是问题,为什么我仍然可以调用两次依赖属性,那么它不会工作了吗?