C# 一个窗口中的WPF应用程序

C# 一个窗口中的WPF应用程序,c#,wpf,window,panels,C#,Wpf,Window,Panels,我是WPF新手,希望创建类似cookbook的WPF应用程序。我已经这样做了,应用程序工作正常。但我是这样做的: 第一个屏幕显示按钮,打开新窗口进行操作。因此,我有14个不同的窗口。没关系,但现在我想换一种方式 我正在尝试创建一个窗口,它将在开始时显示,并更改内容。我把窗户分成两个格子。第一个是静态的,放在底部。它包含代表程序功能的按钮。第二个是动态的。在那里,我想显示每个窗口的内容。所以我想更改此面板的内容,而不是创建新窗口 我试图制作*.cs文件,这些文件将在代码隐藏、函数和数据中创建控件。

我是WPF新手,希望创建类似cookbook的WPF应用程序。我已经这样做了,应用程序工作正常。但我是这样做的:

第一个屏幕显示按钮,打开新窗口进行操作。因此,我有14个不同的窗口。没关系,但现在我想换一种方式

我正在尝试创建一个窗口,它将在开始时显示,并更改内容。我把窗户分成两个格子。第一个是静态的,放在底部。它包含代表程序功能的按钮。第二个是动态的。在那里,我想显示每个窗口的内容。所以我想更改此面板的内容,而不是创建新窗口

我试图制作*.cs文件,这些文件将在代码隐藏、函数和数据中创建控件。但我的想法并不成功,我不知道如何做到这一点

总之,我想创建一个应用程序,它的工作原理如下: -若你们点击按钮“AddReceip”,那个么应用程序将显示添加名称、配料和最后保存的控件。 -如果您点击“Show receip”,以前的内容将被成分列表替换

等等


我希望您能理解我。

感谢您的尝试,我希望您选择的是单独的窗口。用户控件类似于windows,您可以在用户控件中创建UI和功能。我建议您按照以下方式设计主窗口:

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

可以创建框架而不是第二个栅格。框架允许您在框架本身中显示页面,而不是在单独的窗口中。您可以将框架导航到页面中,如

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中,困难程度与您遵循WPF设计的正常MVVM范式的程度密切相关(做得越好,就越容易)。首先,最简单的方法是为每个状态创建视图,作为
DataTemplate
resources,为每个状态创建不同的视图模型类。然后只包含一个
ContentControl
,其中
Content
属性绑定到当前状态的视图模型。如果您可以将问题缩小到下一个小步骤,那么您可能会在该特定步骤中获得帮助。我的主要问题是在其他文件中创建控件或包含所有控件的面板,然后在mainwindow中显示它。例如,创建类文件,它将创建所有控件,然后在屏幕上显示它。这可能会很有帮助:)我会尝试,但我也想知道如何创建每个用户控件。我应该在哪里保留所有按钮、文本框和其他的代码?如果我理解,我需要创建一个改变画布的动态空间和功能。但我想知道如何从其他文件(类文件、页面文件等)创建此控件。谢谢帮助!:)我想这就是我想要的:)非常感谢!
mainFrame.Source = new Uri((sender as Button).Tag.ToString() + ".xaml",UriKind.Relative);