2013-08-29 11 views
1

У меня есть два текстовых поля: min и max для ввода пользователем. Если максимальное число меньше минимального числа, число в текстовом поле max автоматически будет изменено на тот же номер, что и номер min в текстовом поле min.Минимальное и максимальное связывание

Каков наилучший способ реализовать его с помощью wpf и C#? Код был бы замечательным.

Спасибо!

ответ

0

Определите два свойства MinValue и MaxValue типа int в вашей ViewModel (при использовании MVVM) и привяжите к двум текстовым полям.

C#

private int minValue; 
    private int maxValue; 

    public int MinValue 
    { 
     get { return minValue; } 
     set 
     { 
      minValue = value; 
      PropertyChanged(this, new PropertyChangedEventArgs("MinValue")); 

      if (minValue > maxValue) 
      { 
       MaxValue = minValue; 
      } 
     } 
    } 


    public int MaxValue 
    { 
     get { return maxValue; } 
     set 
     { 
      maxValue = value; 
      PropertyChanged(this, new PropertyChangedEventArgs("MaxValue")); 
      if(maxValue < minValue) 
      { 
       MinValue = maxValue; 
      } 
     } 
    } 

Xaml:

<TextBox Text="{Binding MinValue, UpdateSourceTrigger=PropertyChanged}"/> 
<TextBox Text="{Binding MaxValue, UpdateSourceTrigger=PropertyChanged}"/> 

Благодаря

+0

Большое спасибо. Это сработало. Мне просто пришлось переключить minValue = maxValue. –

+1

рад, что это сработало. вы можете принять ответ;) – Nitin

0

Просто положить так, как я достичь в моем WPF кода для MIN числовое значение 0 и MAX числовое значение 99. надеюсь, это может помочь

<!-- WPF Code Sample.xaml --> 
<TextBox 
    Text="1" 
    Width="20" 
    PreviewTextInput="PreviewTextInputHandler" 
    IsEnabled="True"/> 

https://social.msdn.microsoft.com/Forums/vstudio/en-US/990c635a-c14e-4614-b7e6-65471b0e0e26/how-to-set-minvalue-and-max-value-for-a-testbox-in-wpf?forum=wpf

// C# Code Sample.xaml.cs    
private void PreviewTextInputHandler(object sender, TextCompositionEventArgs e) 
{ 
    // MIN Value is 0 and MAX value is 99 
    var textBox = sender as TextBox; 
    bool bFlag = false; 
    if (!string.IsNullOrWhiteSpace(e.Text) && !string.IsNullOrWhiteSpace(textBox.Text)) 
    { 
     string str = textBox.Text + e.Text; 
     bFlag = str.Length <= 2 ? false : true; 
    } 
    e.Handled = (Regex.IsMatch(e.Text, "[^0-9]+") || bFlag); 
} 
Смежные вопросы