我在wpf中创建了一个用户控件。我还创建了一个主窗口。现在,我想要的是,当我点击一个按钮(在mainWindow中)时,用户控件就像一个对话框一样显示。假设我有一个名为i-e的按钮创建新用户。现在,我想要的是在按钮点击时显示控件(我为新用户创建的),而不是在mainWindow中调用它。
答案 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建议的单独窗口中。
用户控件的主要优点是可以在应用程序的多个点使用此用户界面块。 (例如,带有滚动,缩放和屏幕截图按钮的图形控件用户控件将出现在每个图形旁边,使其成为用户控件的理想候选者。)