2012-02-11 103 views
2

我已經在wpf中創建了一個用戶控件。我也創建了一個主窗口。現在,我想要的是,當我點擊一個按鈕(在mainWindow中)時,用戶控件顯示爲一個對話框。假設我有一個名爲i-e的按鈕來創建新用戶。現在,我想要的是顯示控制(我爲新用戶創建)按鈕單擊而不是在mainWindow中調用它。如何在wpf中按鈕單擊時顯示用戶控件?

回答

0

在WPF演示應用程序Family Show,在主窗口(MainWindow.xaml

<!-- New User Control --> 
<local:NewUserControl x:Name="NewUserControl" 
HorizontalAlignment="Center" VerticalAlignment="Center" 
AddButtonClick="NewUserControl_AddButtonClick"/> 

然後,在後面的代碼(MainWindow.xaml.cs)創建用戶控制,不同的用戶控件被隱藏或顯示爲的結果點擊按鈕中的動作。

/// <summary> 
/// Hides the New User Control. 
/// </summary> 
private void HideNewUserControl() 
{ 
    NewUserControl.Visibility = Visibility.Hidden; 
    DiagramControl.Visibility = Visibility.Visible; 
    enableButtons(); 

    if (family.Current != null) 
     DetailsControl.DataContext = family.Current; 
} 

/// <summary> 
/// Shows the New User Control. 
/// </summary> 
private void ShowNewUserControl() 
{ 
     HideFamilyDataControl(); 
     HideDetailsPane(); 
     DiagramControl.Visibility = Visibility.Collapsed; 
     WelcomeUserControl.Visibility = Visibility.Collapsed; 

     if (PersonInfoControl.Visibility == Visibility.Visible) 
      ((Storyboard)this.Resources["HidePersonInfo"]).Begin(this); 

     NewUserControl.Visibility = Visibility.Visible; 
     NewUserControl.ClearInputFields(); 
     NewUserControl.SetDefaultFocus(); 

     ... //Removed for brevity 
    } 

我建議您下載的家品展的應用程序來看看源代碼,或者browse它至少上線。

你可以把它放在一個單獨的窗口中,像Johannes Hofmeister建議的答案。

用戶控件的主要優點是該用戶界面塊可能在應用程序中的多個點上使用。 (例如,圖形控件的用戶控件具有滾動,縮放和屏幕截圖按鈕將出現在每個圖的旁邊,使其成爲用戶控件的理想候選者)。

2

您可以輕鬆地添加另一個窗口與您的usercontrol在上面!

首先,創建另一個窗口(在解決方案資源管理器中右鍵單擊,添加新項目窗口)。 其次,把你拖到用戶控件到窗口:

<Window x:Class="MyWpfApplication.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:DeleteMeTest="clr-namespace:DeleteMeTest" 
     Title="Window1" Height="300" Width="300"> 
    <Grid> 
     <MyWpfApplication:UserControl1 /> 
    </Grid> 
</Window> 

然後你必須設置按鈕單擊處理程序來顯示窗口:

MainWindow.xaml:

<Window x:Class="MyWpfApplication.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Button Content="Click Me" Click="Button_Click"/> 
    </Grid> 
</Window> 

的Button_Click處理程序主窗口.xaml.cs:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    new Window1().ShowDialog(); 
} 

ShowDialog()方法打開一個dia日誌,這意味着窗口在頂部,必須先與(關閉)進行交互,然後才能返回與主窗口進行交互。

您也可以使用顯示方法來使用非阻塞窗口。

+0

是的,我喜歡你的答案,也apreciate它。但是,這是一種專業的方式,因爲那樣對用戶控制沒有任何好處。爲什麼我們不把整個東西寫在同一個窗口中,而不是使用用戶控制。 – 2012-02-11 16:23:51

相關問題