C# Datatrigger在某些调用后未触发
似乎这个不开火的DataTrigger是反复出现的,不幸的是,我没有找到任何解决问题的答案。 我使用依赖属性来处理我的窗口C# Datatrigger在某些调用后未触发,c#,wpf,viewmodel,dependency-properties,datatrigger,C#,Wpf,Viewmodel,Dependency Properties,Datatrigger,似乎这个不开火的DataTrigger是反复出现的,不幸的是,我没有找到任何解决问题的答案。 我使用依赖属性来处理我的窗口 关闭它 隐藏它 表现出来 可以直接从窗口本身调用操作,也可以通过发布者模式从NotifyIcon调用操作 问题是:动作调用在一段时间后不会触发任何动作(取决于我之前所做的动作) 例如,如果我首先关闭窗口->确定 如果我隐藏窗口,然后显示它(这两个都可以),然后关闭它->不确定,什么都不会发生 窗口中的代码: <Window.Resources> &l
- 关闭它
- 隐藏它
- 表现出来
<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>
我可以说,当问题发生时,根本不调用方法“OnAction”
但是我不知道(我也不知道如何测试),问题是来自对视图的调用,还是来自对ActionProperty的调用。
考虑到我的研究,似乎每次我都应该重新调用Dependency属性,但我不知道怎么做,如果这是个问题,为什么我仍然可以调用两次Dependency属性,那么它就不起作用了?我已经编辑了你的标题。请看,“,其中的共识是“不,他们不应该”。嗨,约翰,好的,很抱歉!
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();
}
}
}