скрыть строки в ячейке данных при переключении переключателя - PullRequest
0 голосов
/ 12 декабря 2018

Вот мой файл шаблона xaml:

    <Switch  IsToggled="{Binding ShowSubItems}" Grid.Row = "0" Grid.Column = "1" HorizontalOptions = "Start" Margin = "10,8,8,0"></Switch>

, за которым следует:

      <ListView x:Name="lvItemSigns" HasUnevenRows="True" SeparatorVisibility="Default" SeparatorColor="Gray" Margin =" 8">

Я связываю ячейку данных с этим списком следующим образом:

                lvItemSigns.ItemTemplate = new DataTemplate(typeof(DataCell));

        class DataCell : ViewCell{
public DataCell()
        {
            var grid = new Grid();
            grid.RowDefinitions.Add(new RowDefinition { Height =  GridLength.Auto});
            grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
            grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });

            label = new Label();
            label.TextColor = Color.Black;
            label.SetBinding(Label.TextProperty, "SubItemCode");
            label.Margin = 4;
            grid.Children.Add(label, 1, 3);

            label = new Label();
            label.TextColor = Color.Black;
            label.SetBinding(Label.TextProperty, "SubItemDescription");
            label.Margin = 4;

            label.SetBinding(Label.IsVisibleProperty, new Binding("SubItemDescription", BindingMode.Default, new BooleanConverter()));

            grid.Children.Add(label, 1, 4);
}

Как скрыть эти две метки от каждой ячейки данных списка при переключении переключателя.

Спасибо

1 Ответ

0 голосов
/ 13 декабря 2018

При установке свойства IsVisibleProperty свойство привязки не должно быть 'ShowSubItems'? Код

будет

label.SetBinding(Label.IsVisibleProperty, new Binding("ShowSubItems", BindingMode.Default, new BooleanConverter()));

также. Убедитесь, что вы уведомили об изменении свойства вСвойство 'ShowSubItems' подобно,

 private bool showSubItems;
    public bool ShowSubItems
    {
        get { return showSubItems; }
        set { showSubItems = value; OnPropertyChanged(); }
    }

также код конвертера должен быть

public class BooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (targetType != typeof(bool))
            throw new InvalidOperationException("The target must be a boolean");

        return !(bool)value;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // Optional: throw new NotSupportedException();
        return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...