我有一个绑定到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