2012-02-11 236 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

相关问题