ContentView中的BindableProperty不起作用
本文关键字:不起作用 BindableProperty 中的 ContentView | 更新日期: 2023-09-27 18:12:50
我做了一个非常简单的是/否RadioBox控件。
在它的代码后面,我有以下BindableProperty
:
public static readonly BindableProperty SelectedValueProperty = BindableProperty.Create(
"SelectedValue",
typeof(int),
typeof(YesNoView),
0,
BindingMode.TwoWay);
它的属性是:
public int SelectedValue
{
get { return (int) GetValue(SelectedValueProperty); }
set { SetValue(SelectedValueProperty, value); }
}
该属性在ContentView-XAML中使用如下内容绑定:
<DataTrigger Binding="{Binding SelectedValue}" Value="0" TargetType="Image">
<Setter Property="Source" Value="radiobutton_checked.png" />
</DataTrigger>
每当我在某些页面中使用我的ContentView并将SelectedValue
设置为恒定值时,一切工作正常!
然而,当我使用{Binding SomeValue}
而不是恒定值时,其中SomeValue
是我使用ContentView的页面上的属性(带有通知),它将简单地拒绝做任何事情。每当我将SomeValue
设置为某个值时,它永远不会到达ContentView,这让我发疯了,为什么它不工作。
即使当我调整BindableProperty来指定propertyChanged事件时,它也不会被触发,除非我在Xaml中恢复到一个常量值,而不是一个绑定。
有没有人能解释一下为什么会发生这种情况,而不是像我期望的那样工作?
编辑:我应该补充一下,在页面和视图中,BindingContext都设置为this
我在总共浪费了4个小时后发现了这个问题…
永远不要在你的ContentView中做BindingContext = this;
,因为它劫持了试图绑定到它的页面的上下文。使用Content.BindingContext = this;