2011-10-04 16 views
2

IntergerUpDownコントロールから値を取得するにはどうすればよいですか?この使用 I'am:http://wpftoolkit.codeplex.com/wikipage?title=NumericUpDown はここMainWindow.xamlWPF Tookit - IntegerUpDown

<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へのintとしてユーザーによって。 View Modelを作成し、それを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"); 
     } 
    } 

質問は、私はそれを一緒にリンクする方法です??

平和

アンドリュー

答えて

3

これを行う適切なMVVM正しい方法は、 ViewModelのプロパティに値を設定します。

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

    } 
} 

私はあなたが後でされているコードからCurrentCountを更新し、それがIntegerUpDownコントロールに正しく反映されていませんしたい場合がありますJosh Smith's excellent article on MVVM.

一つのことをお勧めします。これを行うには、INotifyPropertyChangedインターフェイスから継承する必要があります。あなたは彼のViewModelBaseクラスを使うことができます。次に、あなたのViewModelViewModelBaseから継承し、プロパティを送信するためにOnPropertyChangedを呼び出すことができ、通知を変更:

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

Hey Aphex、 クール、答えに感謝します。私は家に帰るときにそれを試してみるでしょう、私は正しくそれをやりたいと思っていました。それは私の学習にとって有益なものです。 – Andrew

+0

私は記事を読んでいます..そしてまだ少し混乱しています。余裕があるときに私を助けてくれますか? – Andrew

+0

確かに、どんな問題に取り組んでいますか?元の投稿を更新したり、新しい質問を作成してここにリンクしたりすることができます(そして私はここで他のMVVMのオタクが助けてくれることを嬉しく思います) – Aphex

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); 
} 
+0

こんにちはRQDQ、 グレート答え...それを行うための適切な方法は何ですか? ModelViewModelと呼ばれる別のクラスを作成し、そのようにしますか? – Andrew