Silverlight - 在 XAML 中而不是在构造函数中设置 DataContext?

标签 silverlight datacontext

如何在 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/

相关文章:

silverlight - Silverlight 中的自定义属性绑定(bind)

c# - 如何在 xaml 中访问 Collection 中的基本数据上下文

c# - 通过 ViewModel 设置 ImageSource 不起作用

wpf - 数据网格自动滚动以使最后一行可见

silverlight - 从 Silverlight DataGrid 中的索引获取行

c# - 将 XML 项动态添加到列表框时出现问题,C#?

linq-to-sql - 有什么方法可以提高 Linq-To-SQL 的性能?

linq-to-sql - 我应该从 DAL 返回 IEnumerable<T> 或 IQueryable<T> 吗?

c# - 您如何在 Web 应用程序中集中 Entity Framework 数据上下文?

c# - 从 Xaml 绑定(bind) RichTextBox 的文本