簡體   English   中英

WPF Tookit-IntegerUpDown

[英]WPF Tookit - IntegerUpDown

如何從IntergerUpDown控件中獲取值? 我正在使用它: http ://wpftoolkit.codeplex.com/wikipage?title=NumericUpDown這是MainWindow.xaml中的代碼

 <extToolkit:IntegerUpDown Value="{Binding Mode=TwoWay, Path=CurrentCount}" HorizontalAlignment="Left" Margin="119,111,0,148" Increment="1" Maximum="10" Minimum="1" Width="100"/>

這是MainWindow.xaml.cs中的代碼

 public int CurrentCount { get; set; }
 private void button1_Click(object sender, RoutedEventArgs e)
    {
        CurrentCount = 10;
         int len = Talker.BlahBlahBlah(textBox1.Text, CurrentCount);
    }

因此,基本上我想將用戶選擇的值作為整數傳遞給方法BlahBlahBlah。 我是否需要創建一個視圖模型並將其綁定到CurrentValue屬性? 您能給我提供示例代碼,該示例代碼從UI中獲取價值嗎?

這是我的口語課:

 class Talker
{
    public static int BlahBlahBlah(string thingToSay, int numberOfTimes)
    {
        string finalString = "";
        for (int i = 0; i < numberOfTimes; i++)
        {
            finalString = finalString + thingToSay + "\n";
        }

        MessageBox.Show(finalString);
        return finalString.Length;
    }
}

這是ViewModelBase內部的方法:

    public virtual int CurrentCount
    {
        get { return _CurrentCount; }
        set
        {
            _CurrentCount = value;
            OnPropertyChanged("CurrentCount");
        }
    }

問題是如何將它們鏈接在一起?

和平

安德魯

正確的,MVVM正確的方法是將Value綁定到ViewModel的屬性。

public int CurrentCount
{
    get { return _CurrentCount; }
    set
    {
        _CurrentCount = value;

    }
}

我推薦Josh Smith關於MVVM的精彩文章。

您稍后可能想做的一件事是從代碼更新CurrentCount ,並將其正確反映在IntegerUpDown控件中。 為此,您必須繼承自INotifyPropertyChanged接口。 您可以使用他的ViewModelBase類來做到這一點。 然后,您的ViewModel繼承自ViewModelBase並可以調用OnPropertyChanged發送屬性更改的通知:

public int CurrentCount
{
    get { return _CurrentCount; }
    set
    {
        _CurrentCount = value;
        base.OnPropertyChanged("CurrentCount");            
    }
}

一種方法是命名IntegerUpDown控件

<extToolkit:IntegerUpDown 
    x:Name="CurrentCountUpDown" 
    HorizontalAlignment="Left" 
    Margin="119,111,0,148" 
    Increment="1" 
    Maximum="10" 
    Minimum="1" 
    Width="100"/>

然后只需在事件處理程序中按名稱引用該控件即可:

private void button1_Click(object sender, RoutedEventArgs e)
{
    int len = Talker.BlahBlahBlah(textBox1.Text, CurrentCountUpDown.Value);
}

暫無
暫無

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

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