調用用戶控件的公共方法,我在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