将文本框输入限制为属性给出的最大值

时间:2018-01-22 19:44:04

标签: c# wpf uwp

我在WPF应用程序中工作,我遇到这种情况: - 在视图模型中,我有两个属性:数量和库存 - 在视图中我有一个绑定到数量的文本框 我想要的是允许最大数量只有在Stock文本框中输入的库存数量。例如,如果Stock = 3,那么无论我在数量的文本框中添加什么数字,如果更高,则将其设置为3。

我尝试过以下方法:

private int quantity;
public int Quantity
{
    get { return quantity; }
    set
    {
         if (value > Stock)
         {
             quantity = Stock;
         }
         else
         {
             quantity = value;
         }
         NotifyPropertyChanged("Quantity");
   }   
}

这个问题是在视图模型中数量设置为Stock但在视图中没有更新(如果我输入70作为Quantity,那么它在视图模型3中设置为Stock,但视图未更新)。文本框的绑定是两种方式,属性更改为更新源触发器。 我一直在考虑使用文本框丢失焦点。但我觉得这不是正确的做法。有没有人对此有所了解?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

这个问题是在视图模型中数量设置为Stock但在视图中没有更新(如果我输入70作为Quantity,那么它在视图模型3中设置为Stock,但视图未更新)。文本框的绑定是两种方式,属性更改为更新源触发器。我一直在考虑处理丢失焦点的文本框。

根据您的要求,您可以使用UpdateSourceTrigger立即更新UWP中TextBox的来源。有关更多信息,请参阅以下代码。

<TextBox Text="{Binding Quantity,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}">

如果将UpdateSourceTrigger设置为PropertyChanged,则只要绑定目标值发生更改,绑定源就会更新。