私はxamlの依存関係プロパティのデータバインドを試みています(そして失敗しています)。 xamlではなく、コードを使用するとうまく動作します。XAMLバインディングは依存関係プロパティで動作していませんか?
<UserControl x:Class="WpfTest.MyControl" [...]>
<TextBlock Text="{Binding Test}" />
</UserControl>
そして、依存関係プロパティは、単純な文字列です::
ユーザーコントロールは、単に依存関係プロパティにバインドTextBlock
ある
public static readonly DependencyProperty TestProperty
= DependencyProperty.Register("Test", typeof(string), typeof(MyControl), new PropertyMetadata("DEFAULT"));
public string Test
{
get { return (string)GetValue(TestProperty); }
set { SetValue(TestProperty, value); }
}
私はいつもの実装との定期的な性質を持っていますメインウィンドウでINotifyPropertyChanged
の
private string _myText = "default";
public string MyText
{
get { return _myText; }
set { _myText = value; NotifyPropertyChanged(); }
}
これまでのところとても良いです。メインウィンドウのTextBlock
にこのプロパティをバインドすると、すべて正常に動作します。 MyText
が変更され、すべてが世界でうまくいけば、テキストは正しく更新されます。
<TextBlock Text="{Binding MyText}" />
ただし、私がユーザーコントロールで同じことを行うと、何も起こりません。
<local:MyControl x:Name="TheControl" Test="{Binding MyText}" />
そして今、楽しい部分は、私がコードの中で非常に同じバインディングをしていれば機能します!
なぜxamlで動作しないのですか?
さらに詳しいXAMLを表示してください。あなたが{Binding}にバインドすると、間違ったデータコンテキストにバインドしていることがわかります。 – SledgeHammer
プロパティ名( "Test")をRegisterメソッドの最初のパラメータとして渡す必要があります。 Typeを最初のパラメータとして受け取るオーバーロードを見つけることができませんでした。 –
MyControlのDataContextとは何ですか?それはMainWindowでなければなりません –