Silverlight 将视图添加到主用户控件

Silverlight 将视图添加到主用户控件,silverlight,xaml,silverlight-5.0,esri,Silverlight,Xaml,Silverlight 5.0,Esri,我正在为一个应用程序构建一个扩展,这是我的问题 有一个主布局xaml页面,它绑定到主应用程序数据源(这意味着您可以在应用程序上使用不同的布局) 我创建了一个视图,我想放在这个布局页面上。我的视图有自己的视图模型,一旦在应用程序中单击“工具”,它就会被设置 这是layout连接到主应用程序的数据源 <Grid d:DataContext="{Binding Source={StaticResource ViewerDataSource}}"> 通过调试,它每次都会命中我的view

我正在为一个应用程序构建一个扩展,这是我的问题

有一个主布局xaml页面,它绑定到主应用程序数据源(这意味着您可以在应用程序上使用不同的布局)

我创建了一个视图,我想放在这个布局页面上。我的视图有自己的视图模型,一旦在应用程序中单击“工具”,它就会被设置

这是layout连接到主应用程序的数据源

<Grid d:DataContext="{Binding Source={StaticResource ViewerDataSource}}">

通过调试,它每次都会命中我的viewmodel,但从不更新任何内容

我将视图添加到主布局中,如下所示

 <!--Begin Custom Tab Item-->
                    <sdk:TabItem  Name="StatisticsTabItem" Cursor="Hand" Visibility="Visible">
                        <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="20" />
                                <RowDefinition Height="*" />
                            </Grid.RowDefinitions>

                            <!-- Add Stats view here-->
                            <views:StatisticsView x:Name="StatsView" DataContext="{Binding BindsDirectlyToSource=True}"  Grid.Row="1"/>
                        </Grid>
                    </sdk:TabItem>

因此,目前它每次都在我的视图上设置一个标签,并正确设置标签,但在主布局xaml中的实际视图上没有更新任何内容

我确实把我的标签设为

private string totalPop;
    public string TotalPop
    {
        get { return totalPop; }
        set 
        {
            if (totalPop != value)
            {
                totalPop = value; 
                OnNotifyPropertyChanged("TotalPop");
            }
        }
    }

<sdk:Label x:Name="lbltotPop" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Content="{Binding TotalPop}" />
私有字符串totalPop;
公共字符串TotalPop
{
获取{return totalPop;}
设置
{
if(totalPop!=值)
{
totalPop=值;
OnNotifyPropertyChanged(“TotalPop”);
}
}
}

在我的其他应用程序中,它可以正常工作,但不知道如何设置到我的视图的绑定会得到更新。

在视图实例化的主布局XAML中设置视图的DataContext属性(这将避免视图从其父视图继承DataContext)


您应该避免的另一件事是对DataContext属性使用名称空间“d:”。通常,该名称空间用于设计数据上下文(我想这可能不是您在这里设置的名称空间)。

它是一个应用程序生成器,我只构建一个适合应用程序生成器布局的扩展。它已经被编程为d:DataContext,是否仍要删除d?在行上放置一个断点,查看DataContext是否已初始化并指向正确的对象实例(检查Debug Locals窗口中的FinalSource属性)。d:DataContext用于设置design DataContext实例,而不是运行时实例。检查。此外,您可以使用{StaticResource ViewerDataSource}而不是{Binding…Source={StaticResource…}设置绑定我已经在主布局上添加了我自己的视图模型,并查看了调试器,现在一切都已正确连接……现在唯一的问题是,更改的属性始终保持空值,即使它已正确更新,等等