WPF: как связать свойство объекта m с событием MouseLeftButtonUp в моем элементе списка
Итак, у меня есть это
object
:
public class Test : INotifyPropertyChanged
{
public string Name { get; set; }
private bool isSelected;
public bool IsSelected
{
get { return isSelected; }
set
{
isSelected = value;
NotifyPropertyChanged("IsSelected");
}
}
public Test(string name, string path, bool selected)
{
Name = name;
Path = path;
isSelected = selected;
}
public override string ToString()
{
return Name;
}
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
Так что я
ListView
связать с моим
object
(Test
) и когда пользователь нажимает на
ListViewItem
Я хочу изменить свой
IsSelected
собственность от
true
к
false
(или или наоборот...)
И
MouseLeftButtonUp
:
<ListView Name="listViewTests" ItemsSource="{Binding Tests}">
<i:EventTrigger EventName="MouseLeftButtonUp">
<i:InvokeCommandAction Command="{Binding MouseLeftButtonUpCommand}"
CommandParameter="{Binding ElementName=listViewTests, Path=SelectedItem}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListView>
Мой
Execute
Команда:
public void Execute(object parameter)
{
Test test = parameter as Test;
if (test != null)
{
}
}
Поэтому вместо того, чтобы изменить мой объект
property
внутри этого
Execute
метод, мне интересно, как это сделать в
XAML
1 ответ
Вы можете настроить
ItemContainerStyle
и связать
ListBoxItem.IsSelected
свойство к вашей модели данных
Test.IsSelected
:
<ListView ItemsSource="{Binding Tests}">
<ListView.ItemContainerStyle>
<!-- The DataContext of this Style is the ListBoxItem.Content (a 'Test' instance) -->
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListView.ItemContainerStyle>
</ListView>