如何在 XAML 中而不是在构造函数中设置我的 Grid 上的 DataContext?
以下是我在构造函数中的操作方式(LayoutRoot 是 XAML 中定义的 XAML Grid):
this.LayoutRoot.DataContext = this.HPVM;
我宁愿在 XAML 中正确执行此操作,但我不知道如何在 XAML 中引用 HPVM 对象。 HPVM 是 USerControl 类的公共(public)属性。
它可以正常工作,如上面所列,但我只想知道如何在 XAML 中设置 UserControl 类的属性,而不是总是必须在代码中进行。
以下是所有相关代码:
<UserControl x:Class="SilverlightApplication1.SLHolePattern" x:Name="HolePatternsControl"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:controls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"
xmlns:local="clr-namespace:SilverlightApplication1"
xmlns:GeoPatterns="clr-namespace:GeoPatterns"
Height="700">
<UserControl.Resources>
...
这是我当前设置 DataContext 的构造函数:
namespace SilverlightApplication1
{
public partial class SLHolePattern : UserControl, INotifyPropertyChanged
{
public HolePatternsViewModel HPVM;
public SLHolePattern()
{
InitializeComponent();
this.HPVM=new HolePatternsViewModel();
this.LayoutRoot.DataContext = this.HPVM;
...more code here
}
一切正常,但我只想学习如何在 XAML 中设置 DataContext,而不是在代码中。
最佳答案
克里斯给出的答案很好。
我已经测试过了,它对我有用。
您可以在 XAML 中实例化您的类(在 UserControl.Resources 中)和
然后将数据上下文绑定(bind)到静态资源。
关注代码:
<UserControl ...>
<UserControl.Resources>
<myNS:MyClass x:Name="TheContext" x:Key="TheContext"></myNS:MyClass>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource TheContext}" >
<TextBlock Text="{Binding Path=Field1}">
</TextBlock>
</Grid>
</UserControl>
关于Silverlight - 在 XAML 中而不是在构造函数中设置 DataContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/606803/