0

その中に aGridと a コンポーネントがあります。子供たちはデフォルトのファイルを使用する必要がありますが、にはカスタムがありGridます。DataContext.xaml.cs

もちろん、DataContext親コントロールの を変更すると、子の も変更されます。

そのため、子供たちDataContextxaml.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>

私は両方を試しましNamex:Nameが、まだ機能せず、次の例外がスローされます。

System.Windows.Data エラー: BindingExpression パス エラー: 'PresenterContent' プロパティが 'MyNamespace.MyModel' 'MyNamespace.MyModel' に見つかりません (HashCode=63183526)。BindingExpression: Path='PresenterContent' DataItem='MyNamespace.MyModel' (HashCode=63183526); ターゲット要素は 'System.Windows.Controls.ContentPresenter' (Name='') です。ターゲット プロパティは 'Content' (タイプ 'System.Object') です。

4

2 に答える 2

1

ページ要素自体を DataContext プロパティにバインドしてみてください。

DataContext="{Binding ElementName=phoneApplicationPage}

または、コード ビハインド (つまり xaml.cs ファイル) で:

yourElement.DataContext = this;

編集:

または、そこにソースを設定するContentことでを設定できます。Binding

Content="{Binding PresenterContent, ElementName=MyName}"
于 2013-09-18T14:37:42.010 に答える
0

親コントロールに名前を付けてから、ElementName を使用して子の DataContext をバインドできます。

DataContext="{Binding ElementName=TheWindow}"
于 2013-09-18T14:39:36.363 に答える