Получение коллекции из вида в viewmodel [duplicate]

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

1
задан Nikolay Kostov 6 February 2015 в 10:40
поделиться

1 ответ

Как упоминает @ Grx70 в комментарии к этому ответу, жест [h2] мыши, определенный в родительском ListView, не будет работать для ListViewItem, потому что этот элемент обрабатывает этот жест, чтобы получить фокус, (g2).

Вы можете перенести свою обработку InputBinding на ListViewItem:

<ListView Name="listView1" ItemsSource="{Binding A}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ContentPresenter Content="{Binding}">
                <ContentPresenter.InputBindings>
                    <MouseBinding Gesture="LeftClick" Command="{Binding DataContext.ItemSelectCommand, ElementName=listView1}" CommandParameter="{Binding ElementName=listView1,Path=SelectedItem}"/>
                </ContentPresenter.InputBindings>
            </ContentPresenter>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

Вы также можете узнать больше о работе InputBinding в это qestion , есть ответ, объясняющий это. Ответ также предполагает создание приложенного поведения.

3
ответ дан Community 18 August 2018 в 20:10
поделиться
  • 1
    Я не уверен, верно ли, что командные привязки работают только для сфокусированных элементов управления. Очевидно, обработка начинается с сосредоточенного управления, но, согласно , этот вопрос и ответы также выходят из строя. С другой стороны, они, кажется, останавливаются, как только они обрабатываются (что согласуется с пузырьками событий), и я предполагаю, что жест MouseClick обрабатывается всеми фокусируемыми элементами управления, чтобы получить фокус, тем самым не позволяя ему пузыриться. – Grx70 6 February 2015 в 11:11
  • 2
    @ Grx70, спасибо за улучшение, я обновил свой ответ. – dymanoid 6 February 2015 в 11:25
  • 3
Другие вопросы по тегам:

Похожие вопросы: