【问题标题】:How do I Reset value of IntegerUpDown to minimum if it exceeds maximum如果超过最大值,如何将 IntegerUpDown 的值重置为最小值
【发布时间】:2015-04-13 08:19:11
【问题描述】:

我有IntegerUpDown这样的

<xctk:IntegerUpDown Value ="{Binding SomeValue}", Maximum="2" Minimum="0"/>. 

如果值为 - SomeValue == 2 (Maximum),我是。 当我单击 Control 中的向上箭头时,我想设置 SomeValue = 0 (Minimum)

我该怎么做?

【问题讨论】:

  • 在telerik控件中,我们有一个属性AutoReverse,你有类似的吗?
  • 我们没有这样的东西。
  • 啊,真可惜..

标签: c# wpf wpftoolkit xceed integerupdown


【解决方案1】:

您可以使用 Value changed 事件来获取当前值。在 Value changed 事件中,检查值,如果等于 Maximum,则将其设置为 Minimum,如下所示:

private void IntegerUpDown_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        var updown = (sender as IntegerUpDown);
        if (updown.Value == updown.Maximum)
            updown.Value = updown.Minimum;
    }

如果您使用的是 MVVM,则使用交互行为或命令来做同样的事情。

或者可能是,您可以将 Value 绑定到 ViewModel 中的属性,就像您可以将 Max、Min Value 绑定到 ViewModel 中的属性一样。并且您可以在 Value 属性的属性更改事件中检查值,并且可以将 Value 设置为高于最大值属性。

【讨论】:

    【解决方案2】:

    如果您想在 View 端执行此操作,对于简单的脏解决方案,您可能需要尝试处理 ValueChanged 事件并检查是否达到最小值或最大值。当您达到最大值/最小值时,它可能不允许您更改值,因此您可能希望将值设置为 &lt;xctk:IntegerUpDown Value ="{Binding SomeValue}", Maximum="3" Minimum="-1"/&gt;. 并在达到时将其相应地更改为 0 或 2。

    为了获得更好和更清洁的解决方案,我不确定当您尝试将值更改为超出最大值/最小值时会引发哪些其他事件。但是您可以基于IntegerUpDown 创建一个控件并覆盖int IncrementValue(int value, int increment)int DecrementValue(int value, int increment) 方法。

    【讨论】:

      【解决方案3】:

      您还可以删除 xaml 中的最小/最大限制:

      <xctk:IntegerUpDown Value ="{Binding SomeValue}" />
      

      然后在视图模型中处理最小/最大限制和翻转:

      public double SomeValue
      {
          get { return _SomeValue; }
          set
          {
              if (value < 0)
                  _SomeValue = 0;
              else if (value >= 2)
                  _SomeValue = 0;
              else
                  _SomeValue = value;
              OnPropertyChanged("SomeValue");
          }
      }
      private double _SomeValue = 1;
      

      【讨论】:

        猜你喜欢
        • 2019-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-13
        • 2023-03-18
        • 1970-01-01
        相关资源
        最近更新 更多