簡體   English   中英

MahApps.Metro NumericUpDown事件解決方法

[英]MahApps.Metro NumericUpDown events workaround

我遇到了一個奇怪的問題,沒有發現其他人也遇到了類似的情況。 我所擁有的是一個NumericUpDown,我只想在按下+或-按鈕時調用一個方法。 所以我可以看到2個選項: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 THEN更新到5,這不是我期望的,如果它僅在相關事件之后更新,那有什么意義呢?

使用第二個選項ValueChanged,它報告正確的-更新的-值,但是該事件在組件初始化期間在窗口加載時(以及在正確的時間)觸發,並且由於未創建依賴對象而導致崩潰-和i不知道為什么該事件會觸發onload。

我發現的唯一解決方法是使用第一個選項,並從值中手動添加/減去1,但是有人有更好的建議嗎? 因為按照我的理解,這兩個選項肯定應該都能正常工作。

謝謝

編輯:處理num_ZoneDistance_ValueChanged事件,然后在其中檢查num_ZoneDistance.Value!= null避免加載時崩潰,沒有解釋為什么在該點觸發了該事件,但是也許是我錯誤地解釋了預期的行為檢查它是否不為null可以解決問題,並且ValueChanged報告與ValueIncremented和ValueDecremented不同的正確值,它們均報告先前的值,並將其減小為1方法而不是2。

您應該使用NumericUpDownChangedRoutedEventArgsInterval屬性來顯示或使用它。

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());
}

如果需要,可以在事件中更改Interval屬性。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM