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

本文关键字:按钮 控制 用户 wpf 显示 | 更新日期: 2023-09-27 18:24:02

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

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

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

我鼓励你下载家庭秀应用程序来查看源代码,或者至少在线浏览。

你可以把它放在一个单独的窗口里,就像约翰内斯·霍夫梅斯特在回答时建议的那样。

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

您可以轻松添加另一个带有用户控件的窗口!

首先,创建另一个窗口(右键单击解决方案资源管理器,添加新项目,窗口)。第二,将用户控件拖到窗口上:

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

然后你必须设置按钮点击处理程序来显示窗口:

主窗口.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:中的按钮点击处理程序

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

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

您也可以使用"显示方法"来创建一个非阻塞窗口。