在我的 WPF 应用程序中,我有两个类,ClassA 和 ClassB。我已经在代码隐藏中将 DataContext 设置为 ClassA
this.DataContext = new ClassA();
Run Code Online (Sandbox Code Playgroud)
所以在我的 XAML 中,我可以将标签内容绑定到WishClassA 的属性,如下所示
<Label Name="myLabel" FontSize="40" Content="{Binding Wish}"/>
Run Code Online (Sandbox Code Playgroud)
这工作得很好。但是当我尝试使用另一个类 ClassB 时,问题就出现了。由于我this.DataContext = new ClassA();仍然留在后面的代码中,我试图从 ClassB 获取属性值(是的,ClassB 有一个具有相同名称和代码的属性)在我的 XAML 中执行如下操作
<StackPanel DataContext="{Binding ClassB}">
<Label Name="myLabelFromB" FontSize="40" Content="{Binding Wish}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我失败了。当我运行时,MainWindow 只显示第一个标签。为什么即使在其父级的 DataContext 设置为 ClassB 时也myLabelFromB没有获得 的值ClassB.Wish?是否可以在不修改我现有代码的情况下实现相同的目标?
为了让它工作,你需要ClassB property in ClassA有点像这样:
public class ClassA
{
public ClassA()
{
this.ClassB = new ClassB();
}
public string Wish { get; set;}
public ClassB ClassB { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
那么这也将起作用:
<StackPanel>
<Label Name="myLabelFromB" FontSize="40" Content="{Binding ClassB.Wish}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4933 次 |
| 最近记录: |