如何从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);
}
所以基本上我想将用户选择的值作为int传递给方法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");
}
}
问题是如何将它们链接在一起?
和平
安德鲁
答案 0 :(得分:3)
正确的,MVVM正确的方法是将Value绑定到ViewModel上的属性。
public int CurrentCount
{
get { return _CurrentCount; }
set
{
_CurrentCount = value;
}
}
我建议Josh Smith's excellent article on MVVM.
您可能希望稍后执行的操作是从代码更新CurrentCount
并使其在IntegerUpDown控件中正确反映。为此,您必须继承INotifyPropertyChanged
接口。你可以使用他的ViewModelBase
类来做到这一点。然后,您的ViewModel
继承自ViewModelBase
,可以致电OnPropertyChanged
发送已更改的通知:
public int CurrentCount
{
get { return _CurrentCount; }
set
{
_CurrentCount = value;
base.OnPropertyChanged("CurrentCount");
}
}
答案 1 :(得分:2)
一种方法是命名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);
}