Почему мы можем выбрать свернутый элемент ListView WPF - PullRequest
0 голосов
/ 04 января 2019

Я создал представление списка и заполнил его наблюдаемой коллекцией. Я свернул ряд .. Но он все еще немного виден и может быть выбран. Можно ли полностью его удалить?

Код указан ниже:

Главное окно xaml:

<Window x:Class="ListViewProblem.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ListViewProblem"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.DataContext>
        <local:ViewModel />
    </Window.DataContext>
    <Grid>
        <ListView ItemsSource="{Binding Numbers}">
            <ListView.ItemTemplate >
                <DataTemplate>
                    <Border Visibility="{Binding Visibility}">
                        <StackPanel Orientation="Horizontal" >
                            <TextBlock VerticalAlignment="Center" Text="{Binding Value}" />
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Vertical" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>

        </ListView>
    </Grid>
</Window>

Модель просмотра:

 public class ViewModel :INotifyPropertyChanged
    {
        private ObservableCollection<NumberVisibility> numbers;
        public ObservableCollection<NumberVisibility> Numbers
        {
            get => numbers;
            set
            {
                numbers = value;
                OnPropertyChanged("Numbers");
            }
        }

        public ViewModel()
        {
            Numbers = new ObservableCollection<NumberVisibility>();
            Numbers.Add(new NumberVisibility() { Value=1, Visibility = System.Windows.Visibility.Visible});
            Numbers.Add(new NumberVisibility() { Value = 2, Visibility = System.Windows.Visibility.Visible });
            Numbers.Add(new NumberVisibility() { Value = 3, Visibility = System.Windows.Visibility.Collapsed });
            Numbers.Add(new NumberVisibility() { Value = 4, Visibility = System.Windows.Visibility.Visible });
            Numbers.Add(new NumberVisibility() { Value = 5, Visibility = System.Windows.Visibility.Visible });
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(string propertyName)
        {
            this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
        }

        protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
        {
            this.PropertyChanged?.Invoke(this, e);
        }
    }

Объект NumberVisibility:

public class NumberVisibility
{
    public int Value { get; set; }
    public Visibility Visibility { get; set; }
}

Обратите внимание, что строка 3 свернута, но все равно занимает несколько пикселей и может быть выбрана. Можно ли это исправить?

Спасибо за помощь.

...