Xamarin добавляет свойство видимости для entrycell в табличном представлении - PullRequest
0 голосов
/ 10 апреля 2020

Мне нужно добавить свойство IsVisible в ячейку ввода, используя пользовательское свойство

(я использовал высоту для изменения при изменении видимости, но код не работает), например:

public class BindableEntryCell : EntryCell
{
    public static readonly BindableProperty IsVisibleProperty = 
                    BindableProperty.Create(
                    propertyName: "IsVisible",
                    returnType: typeof(bool),
                    declaringType: typeof(BindableEntryCell),
                    propertyChanged: OnIsVisibleChanged);


    public bool IsVisible
    {
        get { return (bool)GetValue(IsVisibleProperty); }
        set { SetValue(IsVisibleProperty, value); }
    }


    private static void OnIsVisibleChanged(BindableObject bindable, object oldValue, object newValue)
    {
        if (bindable is BindableEntryCell EntryCell)
        {
            EntryCell.IsVisible = (bool)newValue;


            var YesHeight = EntryCell.Height;
            var NoHeight = 0;

            if ((bool)newValue)
                EntryCell.Height = YesHeight;
            else
                EntryCell.Height = NoHeight;
        }
    }
}

Или используя Конвертер значений (но есть ошибка несоответствия ошибок привязки, даже если я сгибаюсь вдвое), например:

public class HeightToVisabilityConverter : BaseConverter<HeightToVisabilityConverter>
{
    public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var Cell = (EntryCell)parameter;
        var height = Cell.Height;

        if ((bool)value ) 
            return 0;
        else
            return height;
    }

    public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

или любым другим способом, я думал, используя высоту, но что-то принято, пожалуйста, помогите?

...