C# 将DataContext设置为xaml.cs文件

C# 将DataContext设置为xaml.cs文件,c#,xaml,binding,windows-phone-8,datacontext,C#,Xaml,Binding,Windows Phone 8,Datacontext,我有一个网格和一个组件在里面。 网格有一个自定义的数据上下文,而子项必须使用默认的.xaml.cs文件 当然,更改父控件的DataContext也会更改子控件的DataContext 因此,我需要将孩子们的DataContext设置为xaml.cs文件 我正在尝试使用DataContext=“{Binding}”,但它不起作用 我该怎么做 编辑: 这是我基于回复的代码 <UserControl x:Class="MyNamespace.MyClass" x:Name="MyName" xm

我有一个
网格和一个组件在里面。
网格
有一个自定义的
数据上下文
,而子项必须使用默认的
.xaml.cs
文件

当然,更改父控件的
DataContext
也会更改子控件的
DataContext

因此,我需要将孩子们的
DataContext
设置为
xaml.cs
文件

我正在尝试使用
DataContext=“{Binding}”
,但它不起作用

我该怎么做

编辑: 这是我基于回复的代码

<UserControl x:Class="MyNamespace.MyClass"
x:Name="MyName"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:lsp="clr-namespace:LSPlugins"
xmlns:utils="clr-namespace:LSPlugins.Utilities"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="480" d:DesignWidth="480"> 

    <UserControl.Resources>
        <utils:ColorToSolidColorBrushValueConverter x:Key="ColorConverter"/>
        <lsp:MyModel x:Key="MyModel" x:Name="MyModel"/>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" DataContext="{StaticResource MyModel}" Background="{Binding Path=BackgroundColor, Converter={StaticResource ColorConverter}}" Opacity="{Binding Path=BackgroundOpacity}">        
        <ContentPresenter Content="{Binding PresenterContent}" DataContext="{Binding ElementName=MyName}"/>
    </Grid>
</UserControl>

我尝试了
Name
x:Name
两种方法,但仍然不起作用,它引发了以下异常:

System.Windows.Data错误:BindingExpression路径错误:在“MyNamespace.MyModel”“MyNamespace.MyModel”(HashCode=63183526)上未找到“PresenterContent”属性。BindingExpression:Path='PresenterContent'DataItem='MyNamespace.MyModel'(HashCode=63183526);目标元素是“System.Windows.Controls.ContentPresenter”(名称=“”);目标属性为“Content”(类型为“System.Object”)


尝试将页面元素本身绑定到DataContext属性:

DataContext="{Binding ElementName=phoneApplicationPage}
或者,在代码隐藏(即xaml.cs文件)中:

编辑:

或者,您可以通过设置源代码,使用
绑定设置
内容

Content="{Binding PresenterContent, ElementName=MyName}"

您可以命名父控件,然后使用ElementName绑定子控件的DataContext:

DataContext="{Binding ElementName=TheWindow}"

我用新代码编辑了这个问题。我希望避免使用隐藏的代码anyways@StepTNT我认为DataContext在代码中设置正确。问题可能出在Content属性中。PresenterContent在哪里定义?该属性位于
xaml.cs
文件中,没有打字错误或类似的内容。我之所以添加这个异常,是因为解析器似乎试图在模型中查找属性,而不是使用
xaml.cs
contextI我不知道这会解决您的问题,但是为什么不这样设置网格的背景而不设置DataContext呢
Background=“{Binding BackgroundColor,Mode=one-way,Source={StaticResource MyModel}}}”
绑定没有按预期工作,但至少解决了异常,这意味着我没有DataContext问题。谢谢你的提示!
DataContext="{Binding ElementName=TheWindow}"