2017-05-12 8 views
-1

例として機能するためにいくつかの擬似コード:ビューのDataContextにバインドできますが、最も内側のDataContextにはバインドできません。

<UserControl> 
    <UserControl.DataContext> 
     <vm:MyViewModel /> 
    </UserControl.DataContext> 

    <Grid> 
     <StackPanel DataContext="{Binding SomeOtherContext}"> 
      <TextBlock Text="{Binding MyString}" /> 
      <Grid DataContext="THE FIRST CONTEXT"> 
       <TextBlock Text="{Binding PropertyFromFirstContext}" /> 
      </Grid> 
     </StackPanel> 
    </Grid> 
</UserControl> 

だから、私は何を探していますが、最も内側のTextBlockは、その財産を引く結合するために「FIRST CONTEXT」の代わりに、必要な結合構文です最も外側のDataContextからであり、中間に設定されたものではない。StackPanel

私はバインディングでそれを行う方法を示唆するthis oneのような例を見つけましたが、そこに大量のコントロールがあれば、それは余分なコーディングがたくさんあります。内側のバインディング構文が読みやすくなるように、その特定のスコープに新しいDataContextを設定したいと思います。

+0

Downvote、ハァッ?だから...? – DonBoitnott

答えて

3

は、以下のことを試してみてください。

<UserControl x:Name="Parent"> 
    <UserControl.DataContext> 
     <vm:MyViewModel /> 
    </UserControl.DataContext> 

    <Grid> 
     <StackPanel DataContext="{Binding SomeOtherContext}"> 
      <TextBlock Text="{Binding MyString}" /> 
      <Grid DataContext="{Binding DataContext, ElementName=Parent}"> 
       <TextBlock Text="{Binding PropertyFromFirstContext}" /> 
      </Grid> 
     </StackPanel> 
    </Grid> 
</UserControl> 
+0

残念ながら、それは動作しませんでした。 – DonBoitnott

+0

SomeOtherContextはMyViewModelのプロパティですか? – Yevgeniy

+0

はい、そうです。これは実際にはデータモデルのインスタンスです。 – DonBoitnott

関連する問題