附加属性未绑定到Xamarin形式的标签可见性中

时间:2018-12-21 05:46:18

标签: c# xamarin.forms

我在应用程序中使用了附加属性来隐藏标签,

public class LabelExtension
{
    public static readonly BindableProperty ShowTimeStampProperty =
        BindableProperty.CreateAttached("ShowTimeStamp", typeof(bool), typeof(LabelExtension), false);

    public static bool GetShowTimeStamp(BindableObject view)
    {
        return (bool)view.GetValue(ShowTimeStampProperty);
    }

    public static void SetShowTimeStamp(BindableObject view, bool value)
    {
        view.SetValue(ShowTimeStampProperty, value);
    }
}

视图侧绑定是这样完成的,

<Label IsVisible="{Binding  Path=extension:LabelExtension.ShowTimeStamp}"/>

但是标签仍然可见如何实现,请有人帮助我

2 个答案:

答案 0 :(得分:0)

为什么不选择另一种更简单的方法,例如isVisible = "{Binding value}"

bool _value;
public bool value{
    get { return _value; }
    set
    {
        _value = value;
        NotifyPropertyChanged();
    }
}

答案 1 :(得分:0)

  

附加属性是一种特殊类型的可绑定属性,已定义   在一个类中但附加到其他对象,并且在XAML中可识别   作为包含类和属性名称的属性,用   一段时间。

不推荐绑定绑定属性。

附加属性可以定义propertyChanged delegate,当属性值更改时(例如,在控件上设置该属性时),将执行该propertyChanged delegate。根据您的情况,您可以在NotifyPropertyChanged();中使标签可见或不可见,但是没有必要。

您可以将Huy Nguyen用作他的答案中提到的INotifyPropertyChanged。或者,您可以创建从import json with open('save.json', 'w') as outfile: json.dump({ (0, 0): 0, (0, 1): 1, (1, 0): 0, (1, 1): 1, }, outfile) 继承的模型,并在模型中绑定属性以控制标签的可见性。

引用:data-binding

bindable-properties