WPF Tookit - IntegerUpDown

本文关键字:IntegerUpDown Tookit WPF | 更新日期: 2023-09-27 18:10:30

如何从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中获取值的示例代码吗?

这是我的Talker类:

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

问题是我如何将它们连接在一起??

和平

安德鲁

WPF Tookit - IntegerUpDown

正确的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);
}