对不起,陈词滥调......但我对 WPF 和 MVVM 很陌生,所以我不确定如何正确处理这个问题。我的一个视图中有一个 WinForms 控件,当在 ViewModel 中引发事件时,我需要在其代码中进行修改。我的视图的数据上下文是继承的,因此视图模型未在视图构造函数中定义。我将如何正确处理这个问题?我没有使用任何带有内置信使或聚合器的框架。我的相关代码如下。我需要从我的 ViewModel 中触发 ChangeUrl 方法。
编辑:根据 HighCore 的建议,我更新了我的代码。但是,我仍然无法执行 ChangeUrl 方法,该事件正在我的 ViewModel 中引发。需要做哪些修改??
用户控件.xaml
<UserControl ...>
<WindowsFormsHost>
<vlc:AxVLCPlugin2 x:Name="VlcPlayerObject" />
</WindowsFormsHost>
</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
}
}
视图.xaml
<wuc:VlcPlayer VlcUrl="{Binding Path=ScreenVlcUrl}" />
视图模型
private string screenVlcUrl;
public string ScreenVlcUrl
{
get { return screenVlcUrl; }
set
{
screenVlcUrl = value;
RaisePropertyChangedEvent("ScreenVlcUrl");
}
}