我有一个文本框,我有一个TextChanged
事件:
public void tb_textbox_TextChanged(object sender, RoutedEventArgs e)
{
vm.TextInput = tb_textbox.Text;
}
当我调试时,它显示每个输入字符TextInput按预期增长。但是,当我单击给定按钮对该文本执行某些操作时,它会显示为空。
用于UserControl的VM和我的构造函数,其中文本框为:
UC_VM vm;
public Register()
{
InitializeComponent();
vm = new UC_VM(this);
this.DataContext = vm;
}
以及按钮如何在UC_VM
内执行操作:
public ICommand MyCommand
{
get;
private set;
}
和UC_VM的构造函数:
public UC_RegVM(UserControl parent)
{
this.parent = parent;
MyCommand = new RelayCommand(OnMyClick);
}
我正在使用GalaSoft的MVVM灯来帮助我进行数据绑定。
请注意,我知道我应该绑定它。我只是想尝试这个版本,因为我认为应该工作,但我不知道为什么当我点击该按钮时TextInput
属性变为null。
修改
我在UC_VM中有这个属性:
public string TextInput { get; set; }
这获得了输入。当我想访问它时,我得到NullReferenceException
。在调试中它也表示它为空,即使我在 之后点击该按钮 我在文本框中输入了一些内容。
因此,当从.xaml.cs
检查textbox.textChanged
正在使用Debug时,它很好。单击按钮并从UC_VM检查时,它为空。
答案 0 :(得分:1)
只需在textbox_TextCahnged事件中添加vm为null。像这样:
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (vm != null)
vm.TextInput = tb_textbox.Text;
}
它会正常工作。