我有两个文本框:min和max供用户输入。如果最大数字小于最小数字,则最大文本框中的数字将自动更改为与最小文本框中的最小数字相同的数字。
使用wpf和C#实现它的最佳方法是什么?代码会很棒。
谢谢!
答案 0 :(得分:0)
在ViewModel中定义类型为int的两个属性MinValue和MaxValue(如果使用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}"/>
由于
答案 1 :(得分:0)
将我在我的WPF代码中实现的方式设为MIN数值为0,MAX数值为99。 希望这可能有所帮助
<!-- WPF Code Sample.xaml -->
<TextBox
Text="1"
Width="20"
PreviewTextInput="PreviewTextInputHandler"
IsEnabled="True"/>
// 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);
}