调用用户控件的公共方法,我在C#MVVM WPF应用程序,.NET 3.5和Visual Studio 2008WPF用户控件:从视图模型
从APP主XAML我导入用户控制。
这个用户控件具有一些公共方法,有两个我很感兴趣。
一种方法来启动动画,另一个阻止它。
从代码隐藏(xaml.cs)中我的视图的构造函数,我调用用户控件公共方法来启动动画,以显示给用户,而我在ListView中加载一些数据到我的gridview。加载数据的方法称为窗体我的视图模型。
所以,现在,当加载任务完成后,我需要调用另一个用户控制公共方法来停止动画,但我不知道如何从我的视图模型做到这一点。
任何想法?我不能触摸用户控件,因为这不是我的。
下面的一段代码。
XAML:
xmlns:controlProgress="clr-namespace:Common.XAML.Controls.Progress;assembly=Common.XAML"
<controlProgress:Progress x:Name="Progress"
Grid.ZIndex="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="150"
CustomText="Loading...">
代码隐藏(xaml.cs):
public MyView(ViewModelSession vm)
: base(vm)
{
InitializeComponent();
Progress.StartAnimation();
}
视图模型:
public MyViewModel(Session session)
: base(session)
{
this.LoadDataIntoGridView();
}
“我不能触摸用户控制,因为这不是我的。”那么你是不幸的,因为视图模型没有引用视图,所以它不能直接调用它的任何方法。 – mm8
我刚刚发布我的答案,当看到那个邪恶的线......我立即删除 .. – taquion
包裹UC,你不能在UC你可以触摸。然后将您的VM绑定到外部UC。您可以从外部UC代码隐藏中对虚拟机中的状态变化做出反应,并根据需要对包装的UC执行任何操作。显示它,隐藏它,调用它的方法,把它打在脸上,不管。 – Will