MVVM基本内容控制绑定
本文关键字:绑定 内容控制 MVVM | 更新日期: 2023-09-27 18:29:41
我正在努力找出将ViewModel绑定到ContentControl的正确方法(我已经在网上找了很多,但找不到一个可以正确工作的例子)。
我的型号:
public class Model
{
private string _Variable = "TEST";
public string Variable
{
get { return _Variable; }
set { _Variable = value; }
}
}
我的ViewModel
public class ViewModel :ViewModelBase
{
private Model _Model = new Model();
public string Variable
{
get { return _Model.Variable; }
set
{
if (_Model.Variable != value)
{
_Model.Variable = value;
RaisePropertyChanged("Variable");
}
}
}
我的视图/窗口
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
<Window.Resources>
<DataTemplate DataType="{x:Type System:String}">
<TextBox/>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ContentControl Content="{Binding Path=Variable}" />
</StackPanel>
因此,从本质上讲,我已经(或者至少我相信我已经)将ContentControl的内容设置为ViewModel属性"Variable",它是字符串类型,因此应该实现唯一的DataTemplate并显示一个Textbox。
这种情况发生了。。。将显示一个文本框!但是,文本框是空的,所做的任何更改都不会影响变量。
这意味着我在巴塔绑定中犯了一个错误,但我不知道在哪里。我有一种感觉,仅仅因为我的DataTemplate显示了一个Textbox,实际上没有任何东西将字符串绑定到它上,但这是我迷失的地方。
谢谢你的帮助/建议。
您还没有指定TextBox的Text
绑定,它与DataContext完全分离。既然你想让TextBox绑定到它自己的DataContext,那就这样做:
<TextBox Text="{Binding Path=.}"/>
使用如下文本框:
<TextBox Text="{Binding}" />