1 按照《prism搭建项目》搭建prism项目
2 修改MainWindow.xaml,引入behaviours命名空间,用该命名空间的Interaction,给listbox添加事件触发器
<Window x:Class="Prism.UseInvokeCommandAction.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Prism.UseInvokeCommandAction"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding Items}" SelectionMode="Single">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<prism:InvokeCommandAction Command="{Binding SelectedCommand}" TriggerParameterPath="AddedItems" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBox>
<StackPanel Grid.Row="1" Margin="5" Orientation="Horizontal">
<TextBlock Foreground="DarkRed" FontWeight="Bold">Selected Item:</TextBlock>
<TextBlock AutomationProperties.AutomationId="SelectedItemTextBlock" Foreground="DarkRed" FontWeight="Bold" Margin="5,0" Text="{Binding SelectedItemText}" />
</StackPanel>
</Grid>
</Window>
3 修改MainWindowViewModel
using Prism.Commands;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Prism.UseInvokeCommandAction.ViewModels
{
public class MainWindowViewModel:BindableBase
{
private string _title = "Prism Unity Application";
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
private string _selectedItemText;
public string SelectedItemText
{
get { return _selectedItemText; }
private set { SetProperty(ref _selectedItemText, value); }
}
public IList<string> Items { get; private set; }
public DelegateCommand<object[]> SelectedCommand { get; private set; }
public MainWindowViewModel()
{
Items = new List<string>();
Items.Add("Item1");
Items.Add("Item2");
Items.Add("Item3");
Items.Add("Item4");
Items.Add("Item5");
// This command will be executed when the selection of the ListBox in the view changes.
SelectedCommand = new DelegateCommand<object[]>(OnItemSelected);
}
private void OnItemSelected(object[] selectedItems)
{
if (selectedItems != null && selectedItems.Count() > 0)
{
SelectedItemText = selectedItems.FirstOrDefault().ToString();
}
}
}
}