我正在開發一個使用MVVM模式,C#和.NET Framework 4.6.1的WPF。從另一個ViewModel訪問ViewModel
我有一個包含UserControl(Control1
)的窗口,並且UserControl包含另一個UserControl(Control2
)。我選擇了這種方式來代替使用對話框窗口(Control2
充當對話框窗口)。
兩個用戶控件都有一個Viewmodel(Control1VM
和Control2VM
)。
我使用Control2
作爲表單讓用戶輸入一些我需要的數據來啓動應用程序。
這是Control1
的主窗口:
這是Control2
超過Control1
。
我的問題是,我不知道如何隱藏Control2
當我點擊確定或取消按鈕。
這是Control2
的設置上Control1
:
<Grid x:Name="gridControl2" Margin="30" Grid.RowSpan="6" Grid.ColumnSpan="3" Visibility="{Binding GridControl2Visibility}">
<local:Control2 x:Name="userControlControl2" />
</Grid>
要顯示Control2
和Control1VM
設置GridControl2Visibility
到Visible
:
public Visibility GridControl2Visibility
{
get { return gridControl2Visibility; }
set
{
if (gridControl2Visibility != value)
{
gridControl2Visibility = value;
RaisePropertyChangedEvent("GridControl2Visibility");
}
}
}
如何隱藏Control2
當我點擊確定或取消按鈕在Control2
?我的問題是GridControl2Visibility
在Control1VM
,我無法從Control2VM
訪問該類。
通常的做法是使用MVVM工具包的消息傳遞功能。 – Lennart
也爲窗口創建一個虛擬機,並在其中保留虛擬機的實例。子VM將由其子VM實例組成。這樣,您就可以從Window VM控制整個代碼。 – ViVi