DependecyProperty-bindingに奇妙な問題があります。WPFのUserControlのDependencyPropertyへのバインドが期待どおりに機能しない
public static readonly DependencyProperty TestValueProperty = DependencyProperty.Register("TestValue", typeof(string), typeof(Test), new PropertyMetadata(default(string)));
public string TestValue
{
get { return (string)GetValue(TestValueProperty); }
set { SetValue(TestValueProperty, value); }
}
このプロパティは使用されている:私は背後にあるコードで定義されたDependencyPropertyを持っているユーザーコントロールは、持っている同じ不要な行動
を持っていること、i'veは、いくつかのダミーコントロールを作成したシンプルな質問を保つために XAMLで:
<Label Content="{Binding TestValue}" />
このコントロールは、このような別の制御に使用する必要があります。
<views:Test TestValue="{Binding Settings.Setting123}" />
Settings
は、プロパティとしてviewmodelで定義されています。
Settings.Setting123
の内容は、私のusercontrolのラベルに表示されません。
いくつかの修正値を書き込む代わりに、結合、それが正常に動作します:
<views:Test TestValue="Test" />
しかし、もちろん、私は固定値ではなく、バインドされたオブジェクトの内容を望んでいません。 ここで何がうまくいかないのですか?
ありがとうございます!
問題を再現するのに十分なコードを入力してください。 –
質問には表示されていませんが、必ずUserControlのDataContextを自分自身に設定してください(例:そのコンストラクタで 'DataContext = this'によって)。それを削除し、Edの答えに示すように、RelativeSourceでUserControlのXAMLにバインディングを記述します。 – Clemens
はい、UserControlのDataContextはこのようです:DataContext = "{バインディングRelativeSource = {RelativeSource Mode = Self}}" – emvoll