【问题标题】:Why the UpdateSourceTrigger=Propertychanged dose not work correctly in IntegerUpdown?为什么 UpdateSourceTrigger=Propertychanged 在 IntegerUpdown 中无法正常工作?
【发布时间】:2021-04-06 10:31:19
【问题描述】:

我的问题是基于我不久前发布的How to set a restriction to WPF IntegerUpDown toolkit?。

我有两个 WPF IntegerUpdown 控件,一个代表最大数量,另一个代表最小数量,第一个应该大于第二个,第二个应该小于第一个。

@D M 在第一个问题中给出的解决方案解决了我的问题

    <wpfToolkit:IntegerUpDown x:Name="minimumatt" 
                          Value="0" 
                          Minimum="0" />
                                    
<wpfToolkit:IntegerUpDown x:Name="maximumatt" 
                          Value="0" 
                          Minimum="0" 
                          Maximum="{Binding ElementName=minimumatt, 
                                            Path=Value
                                            UpdateSourceTrigger=PropertyChanged}" />

但这只能是我在控件外点击的时候,应该实现的场景是当用户选择一个最小的数字IntegerUpdown控件大于已经存在的最大数字时,应该设置该数字到0 或者当用户此时鼠标失去焦点时默认。

我已经测试过这个解决方案:

 Maximum="{Binding ElementName=minimumatt, 
                                                Path=Value
                                                UpdateSourceTrigger=LostFocus}"

但是事件没有触发。

在这种情况下我该怎么办?

例如,在这种情况下,当用户在 min 中输入 18 时,应该在失去焦点事件中更改该值,现在起作用的是用户必须在此控件之外单击才能获得 minimum @ 中的默认值987654330@

更新:

我发现了一个事件 (Mouseleave_event) 可用于实时更新值(无需单击其他控件),但我不知道如何将此事件与 Propertychanged 一起使用,我该怎么做?

【问题讨论】:

  • 您希望被解雇的“事件”是什么?当控件失去焦点并且焦点不会丢失时,应该重置该值,直到您在控件外部单击。
  • 我已经更新了我的问题,我想申请的事件是MouseLeave_event
  • 那么你需要为那个事件连接一个事件处理程序。

标签: wpf xaml numericupdown updatesourcetrigger


【解决方案1】:

我发现了一个事件 (Mouseleave_event) 可用于实时更新值(无需单击其他控件),但我不知道如何将此事件与 Propertychanged 一起使用,我该怎么做?

UpdateSourceTrigger 是绑定的属性,用于控制源属性(在本例中为 Value)何时更新。它不会为您引发任何 MouseLeave 事件。

如果你想处理一个事件,你应该为它连接一个事件处理程序,并像往常一样在你的代码隐藏类中实现处理程序:

<wpfToolkit:IntegerUpDown x:Name="maximumatt" 
                          Value="0" 
                          Minimum="0" 
                          Maximum="{Binding Value, ElementName=minimumatt}"
                          MouseLeave="maximumatt_MouseLeave"/>

【讨论】:

  • 那个我已经做了,谢谢
  • 是的,在你给我答案之前我已经修好了,但无论如何我还是谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多