Мне интересно, вводит ли команда в модель плохую практику в MVVM. Например, у меня есть ListBox
с Image
и Button
. Когда я нажимаю на Button
, мне нужно открыть URL-адрес в браузере. Итак, мой код будет выглядеть следующим образом:MVVM - это команда в модели плохой практики?
<ListBox ItemSource="{Binding Items">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source={Binding ImageSource} />
<Button Content="Open url" Command={Binding OpenUrlCommand}"/>
</StackPanel>
</DataTemplate>
</Listbox.ItemTemplate>
</ListBox>
ViewModel:
class MainViewModel:BaseViewModel
{
public ObservableCollection<Model> Items {get;set;}
}
Модель:
class Model
{
public string ImageSource {get;set;}
public string Url {get;set;}
public ICommand OpenUrlCommand {get;set;}
public Model()
{
OpenUrlCommand = new RelayCommand(openUrl);
}
public void openUrl()
{
Process.Start(Url); //Open url in browser
}
}
Это нормально, или я должен двигаться OpenUrlCommand
к MainViewModel
?
Что является причиной, чтобы сделать это? – StepUp
Я просто задаюсь вопросом, где должен быть OpenUrlCommand в ViewModel или Model –