Извините, что вы клише ... но я довольно новичок в WPF и MVVM, поэтому я не уверен, как с этим справиться. У меня есть элемент управления WinForms в одном из моих представлений, который мне нужно изменить в его коде, когда событие возникает в ViewModel. Свойство datacontext моего представления наследуется, поэтому viewmodel не определен в конструкторе представлений. Как я буду правильно обращаться с этим? Я не использую никаких фреймворков со встроенными мессенджерами или агрегаторами. Мой соответствующий код приведен ниже. Мне нужно запустить метод ChangeUrl из моего ViewModel.Alter размещен элемент управления Winform от ViewModel
EDIT: Исходя из предложения HighCore, я обновил свой код. Тем не менее, я все еще не могу выполнить метод ChangeUrl, событие создается в моей модели ViewModel. Какие изменения необходимо внести?
UserControl.xaml
<UserControl ...>
<WindowsFormsHost>
<vlc:AxVLCPlugin2 x:Name="VlcPlayerObject" />
</WindowsFormsHost>
</UserControl>
UserControl.cs
public partial class VlcPlayer : UserControl
{
public VlcPlayer()
{
InitializeComponent();
}
public string VlcUrl
{
get { return (string)GetValue(VlcUrlProperty); }
set
{
ChangeVlcUrl(value);
SetValue(VlcUrlProperty, value);
}
}
public static readonly DependencyProperty VlcUrlProperty =
DependencyProperty.Register("VlcUrl", typeof(string), typeof(VlcPlayer), new PropertyMetadata(null));
private void ChangeVlcUrl(string newUrl)
{
//do stuff here
}
}
view.xaml
<wuc:VlcPlayer VlcUrl="{Binding Path=ScreenVlcUrl}" />
ViewModel
private string screenVlcUrl;
public string ScreenVlcUrl
{
get { return screenVlcUrl; }
set
{
screenVlcUrl = value;
RaisePropertyChangedEvent("ScreenVlcUrl");
}
}
WinForms не поддерживает MVVM. вам нужно будет хранить ссылку на представление из любого места, где это необходимо, или использовать EventAggregator или что-то в этом роде. –
В противном случае поместите ваши вещи winforms в WPF 'UserControl' и создайте некоторые DependencyProperties в этом UserControl и манипулируйте элементами winforms в обратных вызовах изменения свойств этих DP. –
@HighCore - Спасибо за предложение. Однако я внес рекомендуемые изменения, но он все еще не работает должным образом. Что я пропустил? – user1017477