WPF Tookit - IntegerUpDown - PullRequest
       2

WPF Tookit - IntegerUpDown

2 голосов
/ 05 октября 2011

Как получить значение из элемента управления 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? Можете ли вы предоставить мне пример кода, который получает значение из пользовательского интерфейса?

Итак, вот мой класс 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");
        }
    }

Вопрос в том, как связать это вместе?

Мир

Andrew

Ответы [ 2 ]

3 голосов
/ 05 октября 2011

Правильный MVVM-правильный способ сделать это - привязать Value к свойству в вашей ViewModel.

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

    }
}

Я рекомендую Отличная статья Джоша Смита о MVVM.

Одна вещь, которую вы можете захотеть сделать позже, это обновить CurrentCount из кода и заставить его отражатьправильно в элементе управления IntegerUpDown.Для этого вам придется наследовать от интерфейса INotifyPropertyChanged.Вы можете использовать его ViewModelBase класс, который делает именно это.Затем ваш ViewModel наследуется от ViewModelBase и может вызвать OnPropertyChanged для отправки уведомлений об изменениях свойств:

public int CurrentCount
{
    get { return _CurrentCount; }
    set
    {
        _CurrentCount = value;
        base.OnPropertyChanged("CurrentCount");            
    }
}
2 голосов
/ 05 октября 2011

Один из способов сделать это - назвать элемент управления 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);
}
...