如何在wpf中显示用户对按钮点击的控制?

时间:2012-02-11 12:58:33

标签: c# wpf user-controls

我在wpf中创建了一个用户控件。我还创建了一个主窗口。现在,我想要的是,当我点击一个按钮(在mainWindow中)时,用户控件就像一个对话框一样显示。假设我有一个名为i-e的按钮创建新用户。现在,我想要的是在按钮点击时显示控件(我为新用户创建的),而不是在mainWindow中调用它。

2 个答案:

答案 0 :(得分: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>

MainWindow.xaml.cs中的Button_Click处理程序:

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

ShowDialog()方法打开一个对话框,这意味着窗口位于顶部,必须与(已关闭)进行交互,然后才能返回与主窗口的交互。

您还可以使用“显示方法”来设置非阻止窗口。

答案 1 :(得分:1)

在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
    }

我建议您下载Family Show应用以查看源代码,或者至少在线browse

你可以把它放在像Johannes Hofmeister建议的单独窗口中。

用户控件的主要优点是可以在应用程序的多个点使用此用户界面块。 (例如,带有滚动,缩放和屏幕截图按钮的图形控件用户控件将出现在每个图形旁边,使其成为用户控件的理想候选者。)