MahApps.Metro NumericUpDown事件解决方法

时间:2015-11-02 20:53:16

标签: c# wpf visual-studio mahapps.metro

我遇到了一个奇怪的问题,并且没有发现其他人在我的搜索中遇到过类似问题。 我有一个NumericUpDown,我只想在按下+或 - 按钮时调用方法。 所以我可以看到两个选项: ValueDecremented& ValueIncremented事件 或者,更好 ValueChanged事件。 但两种选择都没有达到预期的效果。 我已将其剥离,只显示一个消息框,其值如下:

private void num_ZoneDistance_ValueIncremented(object sender, MahApps.Metro.Controls.NumericUpDownChangedRoutedEventArgs args)
{
        MessageBox.Show(num_ZoneDistance.Value.ToString());
}
private void num_ZoneDistance_ValueDecremented(object sender, MahApps.Metro.Controls.NumericUpDownChangedRoutedEventArgs args)
{
        MessageBox.Show(num_ZoneDistance.Value.ToString());
}

另外:

private void num_ZoneDistance_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double?> e)
{
        MessageBox.Show(num_ZoneDistance.Value.ToString());
}

但是在第一盘中,它排在第一位。即。如果它在4上,我按+,它会报告4次更新到5,这不是我所期望的,如果它只在相关事件之后更新,那么重点是什么? / p>

使用第二个选项ValueChanged,它会报告正确的 - 更新的值,但是在窗口加载时(以及在正确的时间),在组件初始化期间事件会触发,并且由于创建了依赖对象而导致崩溃 - 我不知道为什么事件会触发onload。

我找到的唯一解决方法是使用第一个选项,并从值中手动添加/减去1,但有人有更好的建议吗?因为我理解这两种方案当然无论如何都应该正常工作。

由于

编辑: 使用num_ZoneDistance_ValueChanged事件 然后在其中放置一个num_ZoneDistance.Value!= null的检查 在加载时避免崩溃,并没有解释为什么事件在那时被触发,但也许我错误解释了预期的行为,无论是检查它是不是为了绕过问题,还有ValueChanged报告正确的值不同于ValueIncremented&amp; ValueDecremented,它们都报告前一个值,并将其减少为1个方法而不是2个。

1 个答案:

答案 0 :(得分:1)

您应该使用Interval的{​​{1}}属性来展示或使用它。

NumericUpDownChangedRoutedEventArgs

如果您需要,可以在活动中更改private void num_ZoneDistance_ValueIncremented(object sender, MahApps.Metro.Controls.NumericUpDownChangedRoutedEventArgs args) { MessageBox.Show(args.Interval.ToString()); } private void num_ZoneDistance_ValueDecremented(object sender, MahApps.Metro.Controls.NumericUpDownChangedRoutedEventArgs args) { MessageBox.Show(args.Interval.ToString()); } 属性。

希望这有帮助!