Я использую конструкцию, как описано в этот мой предыдущий вопрос, который выглядит примерно так
<ListView x:Name="listView">
<ListView.View>
<GridView />
</ListView.View>
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}"/>
</ListView.Resources>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseRightButtonUp">
<i:InvokeCommandAction Command="{Binding RightClickOnItemCommand}"
CommandParameter={Binding SelectedItem,
ElementName=listView} />
</i:EventTrigger>
</i:Interaction.Triggers>
</ListView>
Это работает как шарм, за исключением того, что он срабатывает, когда я щелкаю правой кнопкой мыши заголовки столбцов. Поскольку я получаю SelectedItem только в качестве параметра для команды, а свойство выбранного элемента не очищается при нажатии на заголовок (и я тоже этого не хочу), я не вижу способа решить эту проблему. на стороне модели просмотра.
До сих пор мне очень нравилось это решение, так как оно обеспечивает действительно хороший и чистый способ обработки этих событий, но этот крайний случай сводит меня с ума.
Я знаю, что могу добавить установщик событий в ListViewItem Style, но обработчик, в свою очередь, потребует от меня написания кода программной части, чего я хотел избежать в первую очередь, отсюда и System.Windows.Interactivity-Stuff.
Есть ли такой же хороший и чистый способ предотвратить это (то есть способ, который не требует написания уродливых хаков кода программной части)?
ItemContainerStyle. - person Federico Berasategui   schedule 12.06.2014<Style TargetType="{x:Type ListViewItem}"/>, поскольку, как говорит мне Intellisense, их можно добавить только к тому, что происходит от объекта зависимости. Хотя, возможно, я ошибаюсь, у меня нет большого опыта разработки с WPF. - person Janis F   schedule 12.06.2014