2017-06-27 3 views
0

すべてがUserControl.xaml.csで行われ、UserControlの特定のプロパティ(Valueと呼ばれる)をTextBlockに渡す必要があるUserControlを作成しました。メインページで作成されます。プロパティのアクセスをテストするために、UserControl内にTextBlockを作成し、Text={Binding Path=Value}を介して "値"にテキストをバインドして正常に動作します。 TextBlockをMainPageからバインドして同じものを実現するにはどうすればよいですか?UWP:UserControlからMainPageへの値の受け渡し

+0

あなたはバインドしますか? 'UserControl'の' Value'プロパティをMainPageの 'TextBlock'に変換しますか?場合は、 'Text = {x:Bind UserControl.Value}'を使用してください。 –

+0

これはやっているようですが、このエラーが発生して以来、データコンテキストが抜けているようです。UserControl 'MyProject.TestApplication.MainPage'タイプのデータコンテキスト内 –

+0

DependencyPropertyとして 'Value'を作成しましたか? –

答えて

1

バインドの一部であるElementNameを使用して、UserControlから値にアクセスすることができます。これを行うには、ユーザーコントロールその後、あなたは次のようにバインド設定x:Nameを与えることがありますので:

Text="{Binding Value, ElementName=MyUserControl}" 
+0

これ!完璧な作品、ありがとう! –

1

は、あなたがたDependencyPropertyとしてあなたの財産を作成していることを確認してください。それがあるので使用x:Bind:あなたはあなたが注意

<TextBlock Text="{x:Bind CustomInkControl.Value, Mode=OneWay}"/> 
<TextBlock Text="{Binding ElementName=UserControl, Path=Value}"/> 

(OR)

コードの下を使用してXAMLで値を取得することができ、コード

public string Value 
{ 
    get { return (string)GetValue(ValueProperty); } 
    set { SetValue(ValueProperty, value); } 
} 

public static readonly DependencyProperty ValueProperty = 
    DependencyProperty.Register("Value", typeof(string), typeof(UserControl), new PropertyMetadata("")); 

の下に使用してそれを行うことができます効率的ですBinding

+0

はい、私はalredyがDependencyPropertyとして自分のPropertyを持っていましたが、私はElementNameが欠けていました。だから、@ jsmyth886とありがとう! –

+1

@ Nigel-Lee 'x:Bind'を使って' Mode = OneWay'を設定することもできます。私は答えを更新しました。 –

関連する問題