Кнопка Скрыть внутри ListView - PullRequest
2 голосов
/ 04 апреля 2019

У меня есть ListView, и в каждой строке есть Button. Я хочу скрыть кнопки, пока пользователь не выберет какую-либо строку.

Я использовал в моей ViewModel:

 private Visibility _deleteButtonVisibility;
 public Visibility DeleteButtonVisibility { get { return _deleteButtonVisibility; } set { _deleteButtonVisibility = value; OnPropertyChanged(nameof(DeleteButtonVisibility)); } }

В моем конструкторе

 DeleteBtnVisibility = Visibility.Hidden;

XAML-код, который я использовал

 <GridViewColumn Width="100">
      <GridViewColumn.CellTemplate>
          <DataTemplate >
              <StackPanel HorizontalAlignment="Center">
                  <Button Click="DeleteBand_Click" Visibility="{Binding DeleteBtnVisibility }" Content="Delete" Width="88"></Button>
              </StackPanel>
          </DataTemplate>
      </GridViewColumn.CellTemplate>
      <GridViewColumn.Header>
          <GridViewColumnHeader Tag="Delete" >Delete</GridViewColumnHeader>
      </GridViewColumn.Header>
  </GridViewColumn>

Прослушиватель событий ViewModel:

    private void WarningModel_OnPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        if(e.PropertyName == nameof(SelectedWarning))
        {
            if(SelectedWarning != null)
            {
                DeleteBtnVisibility = Visibility.Visible;
            }
        }
    }

привязка не работает внутри ListView. Если я использую ту же привязку для любых других объектов за пределами ListView, он скрывает объект. Я пытался скрыть <StackPanel>, который содержит Button, но все еще безуспешно. Я не уверен, почему Binding не работает

1 Ответ

2 голосов
/ 04 апреля 2019

Если свойство DeleteBtnVisibility определено в модели представления ListView (или его родительского представления), вы можете связать его с помощью RelativeSource:

<Button Click="DeleteBand_Click"
        Visibility="{Binding DataContext.DeleteBtnVisibility, RelativeSource={RelativeSource AncestorType=ListView}}" 
        Content="Delete" Width="88" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...