【发布时间】:2020-04-21 14:33:15
【问题描述】:
我是 WPF 新手,但对 MVVM 了解不多,到目前为止,这就是我实现的。
UpdateTableView - 视图(较大用户控件的短 sn-p)
<UserContol.DataContext>
<local:UpdateTableViewModel />
</UserContol.DataContext>
<StackPanel>
<TextBox Text="{Binding InputPath}"/>
<TextBlock Content="Placeholder" />
</StackPanel>
UpdateTableModel - 模型
public class UpdateTableModel : ObservableObject
{
private string _inputPath;
public string InputPath
{
get
{
return _inputPath;
}
set
{
if (value != _inputPath)
{
_inputPath = value;
OnPropertyChanged("InputPath");
}
}
}
}
ObservableObject
public class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanaged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanaged;
if (handler != null)
{
PropertyChangedEventArgs e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
}
还有一个空的 UpdateTableViewModel
class UpdateTableViewModel : ObservableObject { }
我的问题是我将如何使用数据绑定,以便作为用户,当我在文本框中输入 inputPath 时,首先我输入的任何内容都存储在属性 _inputPath 中,这样我就可以在后面的代码中使用它并另外反映在文本块。
我进行了一些研究,发现了一种和两种数据绑定方式,但我无法确定我还需要为我想要的功能添加什么。
提前致谢。
【问题讨论】:
-
TextBox.Text自动绑定TwoWay。这是默认行为。因此,如果不明确指定Binding.Mode,输入TextBox的文本将自动发送到绑定源。在您的情况下,输入将自动发送到InputPath属性。 -
为什么你的
UpdateTableViewModel是空的?它应该包含InputPath属性。 -
@BionicCode。谢谢你的cmets。 UpdateTableViewModel 是空的,因为我不知道我需要什么。我试图找到教程或示例,但大多数都不清楚。谢谢
-
UpdateTableModel是关于什么的,你想从视图模型中设置它吗? -
@BionicCode 我一直在尝试实现 MVVM。在我的理解中,视图是 xaml,viewModel 公开模型,模型具有视图的属性等。这是不正确的吗?
标签: wpf mvvm data-binding