我们说我有一个像下面这样的文本框。我想将它绑定到一组我将在viewmodel中以编程方式设置的值。
<StackPanel Orientation="Horizontal">
<TextBlock Text="Address" Style="{StaticResource tabTextBlock}"/>
<TextBox Text="{Binding test.test2}" Style="{StaticResource tabTextBox}"/>
</StackPanel>
所以ViewModel看起来像......
public class test
{
string test2 = "TEST";
}
如何在viewmodel中查看此语法?我知道对于单个值,代码看起来像
public string Test
{
get { return _Test; }
set { _Test = value; OnPropertyChanged(nameof(Test)); }
}
private string _Test = "";
我只是不确定如何扩展它以在测试中包含局部变量。
答案 0 :(得分:1)
在绑定路径test.test2
中,test
指的是DataContext
的{{1}}(视图模型)的属性,而TextBox
指的是属性这个视图模型。
因此,如果您将test2
(或其任何父元素)的DataContext
设置为以下类:
StackPanel
...并定义public class ViewModel
{
public Test test { get; } => new Test();
}
类,如下所示:
Test
......绑定将起作用。
当然,您可以向public class Test : INotifyPropertyChanged
{
public string test2
{
get { return _test2; }
set { _test2 = value; OnPropertyChanged(nameof(test2)); }
}
...
}
类添加任意数量的属性,并以相同的方式绑定到这些属性。