Я использую шаблон ViewModel Model View в своем приложении WPF.
DataContext моего представления установлен на ViewModel.
У меня есть ListView в моем представлении, в котором есть ContextMenu, и один из MenuItems должен быть привязан к команде, а CommandParameter - это сам ListView.
Теперь моя проблема в том, что я не знаю, как ссылаться на ListView. Может быть, фрагмент кода облегчает понимание:
<ListView
Name="lvTestList"
ItemsSource="{Binding Path=TestList.Items}">
<!-- Context Menu of the selected test -->
<ListView.ContextMenu>
<ContextMenu>
<MenuItem
Header="Remove from List"
IsEnabled="{Binding IsATestSelected}"
Command="{Binding RemoveTestFromTestListCommand}"
CommandParameter="{Binding ElementName=lvTestList}"/>
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding TestName}"/>
<GridViewColumn Header="Package" DisplayMemberBinding="{Binding PackageName}"/>
<GridViewColumn Header="Expected Duration" DisplayMemberBinding="{Binding ExpectedDuration}"/>
</GridView>
</ListView.View>
</ListView>
Проблемная строка гласит:
CommandParameter="{Binding ElementName=lvTestList}"/>
Обычно это будет работать. Однако, если DataContext всего класса изменяется, он просто передает значение null в качестве параметра.
Кто-нибудь знает, как сохранить ссылку на текущий документ xaml? или как "поговорить" с ListView "lvTestList" напрямую?
С наилучшими пожеланиями и спасибо за помощь,
Christian