单击视图模型中的按钮时,添加的文本值将消失

时间:2017-04-19 19:45:56

标签: c# wpf textbox

我有一个文本框,我有一个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检查时,它为空。

1 个答案:

答案 0 :(得分:1)

只需在textbox_TextCahnged事件中添加vm为null。像这样:

    private void textBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (vm != null)
            vm.TextInput = tb_textbox.Text;
    }

它会正常工作。