首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF MVVM将文本框数据获取到ViewModel

WPF MVVM将文本框数据获取到ViewModel
EN

Stack Overflow用户
提问于 2017-03-02 18:44:43
回答 1查看 2K关注 0票数 1

我已经读了很多关于这个问题的问题,到目前为止,我还没有找到这个明显简单的问题的答案。

我有一个视图模型,其中是一个属性。在我的XAML中,我有一个绑定到该属性的TextBox。

但这个属性似乎永远不会改变。

下面是文本框:

代码语言:javascript
复制
<TextBox Grid.Row="1"
         Grid.Column="0"
         Margin="4"
         Text="{Binding CharNameFromTB}" />

以及ViewModel的相关代码:

代码语言:javascript
复制
private String _charNameFromTB;
String CharNameFromTB
{
    get { return _charNameFromTB; }

    set
    {
        if (!string.Equals(this._charNameFromTB, value))
        {
            this._charNameFromTB = value;
            RaisePropertyChanged("CharNameFromTB");
        }
    }
}

我在setter中的if语句上设置了一个断点,但它从未触发过。我是不是遗漏了什么明显的东西?我试着将绑定模式设置为双向,但这并没有改变任何事情。

这让我有点抓狂。任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-02 18:46:53

您应该将属性设置为public,以便能够绑定到该属性:

代码语言:javascript
复制
private String _charNameFromTB;
public String CharNameFromTB
{
    get { return _charNameFromTB; }

    set
    {
        this._charNameFromTB = value;
        RaisePropertyChanged("CharNameFromTB");
    }
}

还要确保您已经将TextBox或其任何父元素的DataContext设置为定义了CharNameFromTB属性的视图模型类的实例。

另请注意,默认情况下,当TextBox失去焦点时会设置source属性。

如果要在每次击键时更新源属性,则应将BindingUpdateSourceTrigger属性设置为PropertyChanged

代码语言:javascript
复制
<TextBox Grid.Row="1"
         Grid.Column="0"
         Margin="4"
         Text="{Binding CharNameFromTB, UpdateSourceTrigger=PropertyChanged}" />
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42553198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档