首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF DataContext问题

WPF DataContext问题
EN

Stack Overflow用户
提问于 2015-09-16 13:53:38
回答 1查看 251关注 0票数 0

我有一个WPF应用程序,我使用Prism作为体系结构。

我有一些定制的东西:我有一个UserControl(向导),它可以接收一个FrameworkElement。此元素显示在带有ContentPresenter的向导用户控件中。

基本上,将使用此用户控件的视图将具有以下代码:

代码语言:javascript
复制
<UserControl x:Class"My.Instance" 
  //skipping namespaces
  mvvm:ViewModelLocator.AutoWireViewModel="True">
    <Wizard>
        <Wizard.ContentElement>
            <TextBlock Text="{Binding MyInstanceProperty}"/>
        </Wizard.ContentElement>
    </Wizard>
</UserControl>

在“向导”UserControl中,我有这样的东西:

代码语言:javascript
复制
<ContentControl Content="{Binding ContentElement}" Margin="10"/>

上下文是用户控件后面的代码(设置在根Grid上)。

在运行时,我有以下错误

System.Windows.Data错误: 40 : BindingExpression路径错误:“对象”“向导”(HashCode=29548405)上找不到“MyInstanceProperty”属性。BindingExpression:Path=MyInstanceProperty;DataItem='WizardViewModel‘(HashCode=29548405);目标元素是'TextBlock’(名称=‘’);目标属性是'Text‘(输入'String')

因此,我的TextBlock似乎在向导UserControl上设置了它的DataContext,而没有设置在"My.Instance“所有者上。

我想是因为我把它托管在ContentPresenter中吧?

我怎么才能避免这种情况?

EN

回答 1

Stack Overflow用户

发布于 2015-09-16 14:41:23

代码语言:javascript
复制
<TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, 
AncestorType={x:Type UserControl}}, Path=DataContext.MyInstanceProperty}"/>

EDIT>>>>>

向导视图:

代码语言:javascript
复制
<ContentControl Content="{Binding ContentElement}" Margin="10"/>

向导视图模型:

代码语言:javascript
复制
ContentElement = new pageViewModel();

App.xaml:

代码语言:javascript
复制
<DataTemplate DataType="{x:Type myViewModel:pageViewModel}">
    <local:pageView/>
</DataTemplate>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32610609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档