我有一個綁定到ListView的應用程序列表。將命令綁定到ListView項MVVM正確的方式
private List<_Application> _applicationList;
public List<_Application> applicationList
{
get { return _applicationList; }
set
{
_applicationList = value;
OnPropertyChanged();
}
}
ListView ItemTemplate被設置爲一個按鈕。
<ListView
ItemsSource="{Binding applicationList}"
BorderThickness="5"
Style="{DynamicResource ListViewStyle}">
<ListView.ItemTemplate>
<DataTemplate>
<Button
Command="{Binding RunCommand}"
Style="{StaticResource ApplicationButtonStyle}"
Content="{Binding name}"
Background="{Binding colorRGB}" >
</Button>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
當我點擊我要上運行的應用程序的按鈕。我的模型_Application具有運行該過程的ActionCommand。
public class _Application
{
public ActionCommand RunCommand
{
get
{ return new ActionCommand(action => Run()); }
}
private void Run()
{
Process p = new Process();
p.StartInfo.FileName = path;
try
{
p.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public _Application()
{
}
}
我不確定在Model中保留ActionCommand是否正確?如何在MVVM模式下正確實現這個? ActionCommand應該放在哪裏,以及如何將它綁定到Button的ListView,這樣正確的_Application將會運行?
謝謝你的回答。這將工作,但我不知道如何確定哪些_應用程序應傳遞給命令行動? ListView.SelectedItem不起作用,因爲我只點擊一個按鈕,而不是選擇項目,然後單擊。 – Crekate
據我所知,你想通過'SelectedItem'到命令。 'CommandParameter =「{Binding SelectedItem,ElementName = ListViewName}」' –
不,我沒有,我剛剛錯過了CommandParameter。一切都很好。非常感謝。 – Crekate