Это можно сделать, выполнив несколько действий. Вы будете инкапсулировать список в свой собственный UserControl. В коде, находящемся в этом элементе управления пользователя, вам нужно будет объявить свойство зависимостей типа ICommand. В xaml вам нужно будет настроить стиль ListBoxItem с обработкой MouseEnterEvent.
<Grid>
<Grid.Resources>
<Style TargetType="ListBoxItem">
<EventSetter Event="MouseEnter"
Handler="HandleEnter" />
</Style>
</Grid.Resources>
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
В коде, который находится позади вас, будет отключен ICommand, который у вас есть как DependecyProperty.
public static readonly DependencyProperty SendToViewModelProperty =
DependencyProperty.Register("SendToViewModel", typeof(ICommand), typeof(control), new PropertyMetadata(null));
private void HandleEnter(object sender, MouseEventArgs e)
{
if (SendToViewModel != null)
{
var fe = sender as FrameworkElement;
if (fe != null)
{
if (SendToViewModel.CanExecute(fe.DataContext))
{
SendToViewModel.Execute(fe.DataContext);
}
}
}
}
Так что это будет срабатывать от собственности ICommand, что вы должны настроить в вашей ViewModel, проходящей в DataContext в ListBoxItem.
Хотите получить этот товар в C#? или просто создать его в коде xaml? – Slashy
Мне это нужно в моей модели. – Hristo
IMO, зависание - это то, что вы делаете с помощью мыши и экрана, потому что они связаны с просмотром. Эти вещи действительно не должны иметь значения в вашей виртуальной машине? – Kcvin