如何运行一个方法时,变量在继承类等于什么?



我是WPF MVVM的新手,所以我甚至不知道这是否是一种正确的方式来做我想做的事情。

我有这个基类,我计划使用它,当我想有一个UserControl (NumPad.xaml)在我的一些视图。

class NumPad : BaseObservableObject
{
private string _text = "";
public string Text
{
get { return _text; }
set
{
if(_text.Length < 6)
_text = value;
else if(_text.Length == 6)
//run some function in LogInViewModel
OnPropertyChanged("Text");
}
}
public RelayCommand NumPadCommand1 { get; set; }
public RelayCommand NumPadCommand2 { get; set; }
public NumPad()
{
NumPadCommand1 = new RelayCommand(Add1);
NumPadCommand2 = new RelayCommand(Add2);
}
public void Add1(object obj)
{
Text += "1";
}
public void Add2(object obj)
{
Text += "2";
}
}

NumPad.xaml

<StackPanel>
<Button Command="{Binding NumPadCommand1}"/>
<Button Command="{Binding NumPadCommand2}"/>
</StackPanel>

LogInView.xaml

<StackPanel>
<TextBox Text="{Binding Text}"/>
<usercontrols:NumPad/>
</StackPanel>

LogInViewModel.cs

class LogInViewModel : NumPad
{
public LogInViewModel()
{
}
}

我想要的是检查每次改变文本数字键盘如果它的长度等于6通知LogInViewModel所以我可以运行一个搜索一些数据的方法,而不需要输入按钮,所以每次通过文本字符串添加到_text我想检查长度和如果它等于6我想运行方法的类继承它,在这种情况下LogInViewModel应运行方法。

一般来说,如果你想在派生类中运行一些方法,你应该在基类中定义一个virtual(或abstract)类:

class NumPad : BaseObservableObject
{
private string _text = "";
public string Text
{
get { return _text; }
set
{
if (_text.Length < 6)
_text = value;
else if (_text.Length == 6)
SomeMethod();

OnPropertyChanged("Text");
}
}
protected virtual void SomeMethod() { }
//...
}

派生类可以(或者必须取决于方法是否为abstract)重写此方法:

class LogInViewModel : NumPad
{
protected override void SomeMethod()
{
//do something....
}
}

最新更新