非常に単純なYes/Noラジオボックスコントロールを作成しました。それにContentViewのBindablePropertyが機能しない
は私がBindableProperty
を以下している背後にあるコードです:
public static readonly BindableProperty SelectedValueProperty = BindableProperty.Create(
"SelectedValue",
typeof(int),
typeof(YesNoView),
0,
BindingMode.TwoWay);
そして、それは財産だ:
このプロパティは、このような何か使用してContentView-XAMLにバインドされているpublic int SelectedValue
{
get { return (int) GetValue(SelectedValueProperty); }
set { SetValue(SelectedValueProperty, value); }
}
:
<DataTrigger Binding="{Binding SelectedValue}" Value="0" TargetType="Image">
<Setter Property="Source" Value="radiobutton_checked.png" />
</DataTrigger>
を
ContentViewをいくつかのページで使用して、いつでもSelectedValue
を一定の値にすると、すべて正常に動作します!
しかし、SomeValue
がContentViewを使用しているページのプロパティ(notify)である定数値の代わりに{Binding SomeValue}
を使用すると、単に何もしないことになります。私がSomeValue
に何らかの値を設定すると、それはContentViewに決して届かず、なぜそれが動作していないのか不自然になってしまいます。
BindablePropertyを調整してpropertyChangedイベントを指定しても、バインディングではなくXamlの定数値に戻さない限り、単にトリガーされません。
私が期待するように、なぜこれが起こっていて動作していないのか、誰にも分かりませんか?
EDIT:ページとビューの両方にBindingContextを追加する必要があります。
の好奇心の声を使用してください。「コンテキストを乗っ取る」という意味と、なぜこれが問題なのかを説明できますか? –
また、バインドに 'Source'パラメータを使用してください。 – Krumelur
@ Sven-MichaelStübe: 'ContentView'を使用する*ページは、' BindingContext'を設定します。これはカスタム 'ContentView'を含むすべての子要素に使用されます。コンテンツビューでコンテキストを再度設定した場合は、上書きされます。 – Krumelur