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

ContentView中的BindableProperty不起作用

我在总共浪费了4个小时后发现了这个问题…

永远不要在你的ContentView中做BindingContext = this;,因为它劫持了试图绑定到它的页面的上下文。使用Content.BindingContext = this;