WPF 应用合二为一 window
WPF application in one window
我是 WPF 新手,想创建像食谱这样的 WPF 应用程序。我已经这样做了,应用程序可以正常工作。但我是这样做的:
第一个屏幕显示按钮,这些按钮打开新的 windows 以执行某些操作。结果我有 14 个不同的 windows。没关系,但现在我想用其他方式来做。
我正在尝试制作一个window,将在开始时显示,并更改内容。我将 window 分成两个网格。首先是静态的,放在底部。它包含代表程序功能的按钮。第二个将是动态的。在那里我想显示每个 window 的内容。所以我想更改此面板的内容而不是创建新的 windows。
我尝试制作 *.cs 文件,这些文件将在代码隐藏、函数和数据中创建控件。但是我的想法没有成功,我不知道该怎么做。
总而言之,我想创建应用程序,它将像这样工作:
- 如果您单击按钮 "Add receip",则应用程序将显示用于添加名称、成分并在最后保存的控件。
- 如果您点击 "Show receip" 之前的内容将被成分列表所取代
等等
希望你能理解我。
感谢您的尝试,希望您正在寻找 WPF user controls 而不是单独的 windows。用户控件类似于 windows 您可以在用户控件中创建 UI 和功能。我想推荐你设计主要 window 如下:
<Grid>
<Canvas Name="canFunctionalButtons">
<!--Define the buttons inside this canvas
And allocate proper place for this in the UI
-->
</Canvas>
<Canvas Name="canControlContainer">
<!--This is to display the user control
Which can be changed dynamically according to the Button's click
-->
</Canvas>
</Grid>
然后您必须为这些按钮添加点击事件,这将向 canControlContainer
canvas 添加特定的用户控件。向此 canvas 添加用户控件的示例如下,让 btnAddSomething
成为按钮,btnAddSomething_Click
成为其点击事件,然后您可以执行以下操作:
private void btnAddSomething_Click(object sender, RoutedEventArgs e)
{
canControlContainer.Children.Clear(); // will remove previous contols from this canvas
// UC_AddSomething be the user control that you wanted to add here
canControlContainer.Children.Add(new UC_AddSomething());
}
您可以创建一个框架而不是第二个网格。 Frame 允许您在 Frame 本身中显示页面,而不是单独 windows。您可以将框架导航到页面,如
mainFrame.Source = new Uri("Page1.xaml",UriKind.Relative);
这会更改您页面的框架。如果您想再次更改页面,您可以再次更改来源。
注意:您可以像 "showReceip" 一样向您的按钮添加标签,并且您可以只为您的按钮创建一个按钮单击事件。代码将如下所示。
mainFrame.Source = new Uri((sender as Button).Tag.ToString() + ".xaml",UriKind.Relative);
这需要你点击的按钮的标签,在上面添加字符串“.xaml”并将它放在源部分。因此,如果您的标签是 "Page1",我的解决方案将看起来像 "Page1.xaml"。
我是 WPF 新手,想创建像食谱这样的 WPF 应用程序。我已经这样做了,应用程序可以正常工作。但我是这样做的:
第一个屏幕显示按钮,这些按钮打开新的 windows 以执行某些操作。结果我有 14 个不同的 windows。没关系,但现在我想用其他方式来做。
我正在尝试制作一个window,将在开始时显示,并更改内容。我将 window 分成两个网格。首先是静态的,放在底部。它包含代表程序功能的按钮。第二个将是动态的。在那里我想显示每个 window 的内容。所以我想更改此面板的内容而不是创建新的 windows。
我尝试制作 *.cs 文件,这些文件将在代码隐藏、函数和数据中创建控件。但是我的想法没有成功,我不知道该怎么做。
总而言之,我想创建应用程序,它将像这样工作: - 如果您单击按钮 "Add receip",则应用程序将显示用于添加名称、成分并在最后保存的控件。 - 如果您点击 "Show receip" 之前的内容将被成分列表所取代
等等
希望你能理解我。
感谢您的尝试,希望您正在寻找 WPF user controls 而不是单独的 windows。用户控件类似于 windows 您可以在用户控件中创建 UI 和功能。我想推荐你设计主要 window 如下:
<Grid>
<Canvas Name="canFunctionalButtons">
<!--Define the buttons inside this canvas
And allocate proper place for this in the UI
-->
</Canvas>
<Canvas Name="canControlContainer">
<!--This is to display the user control
Which can be changed dynamically according to the Button's click
-->
</Canvas>
</Grid>
然后您必须为这些按钮添加点击事件,这将向 canControlContainer
canvas 添加特定的用户控件。向此 canvas 添加用户控件的示例如下,让 btnAddSomething
成为按钮,btnAddSomething_Click
成为其点击事件,然后您可以执行以下操作:
private void btnAddSomething_Click(object sender, RoutedEventArgs e)
{
canControlContainer.Children.Clear(); // will remove previous contols from this canvas
// UC_AddSomething be the user control that you wanted to add here
canControlContainer.Children.Add(new UC_AddSomething());
}
您可以创建一个框架而不是第二个网格。 Frame 允许您在 Frame 本身中显示页面,而不是单独 windows。您可以将框架导航到页面,如
mainFrame.Source = new Uri("Page1.xaml",UriKind.Relative);
这会更改您页面的框架。如果您想再次更改页面,您可以再次更改来源。
注意:您可以像 "showReceip" 一样向您的按钮添加标签,并且您可以只为您的按钮创建一个按钮单击事件。代码将如下所示。
mainFrame.Source = new Uri((sender as Button).Tag.ToString() + ".xaml",UriKind.Relative);
这需要你点击的按钮的标签,在上面添加字符串“.xaml”并将它放在源部分。因此,如果您的标签是 "Page1",我的解决方案将看起来像 "Page1.xaml"。