Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该使用WPF用户控件吗?或者只是一个网格?_C#_Wpf_User Controls_Menu_Grid - Fatal编程技术网

C# 我应该使用WPF用户控件吗?或者只是一个网格?

C# 我应该使用WPF用户控件吗?或者只是一个网格?,c#,wpf,user-controls,menu,grid,C#,Wpf,User Controls,Menu,Grid,因此,我有一个分为两部分的应用程序——左边是一个自定义菜单,右边是一个包含所有“内容”(不同屏幕)的网格 它看起来像这样: 此外,当点击不同的按钮时,左侧的菜单将充满不同的按钮(例如,如果点击review按钮,菜单将变成以下内容): 我非常确定,我希望每个屏幕(位于右侧)都是它们自己的用户控件 但我的问题是:每个菜单都应该是用户控件吗?这使得使用它们有点困难。然后我不得不担心有getter/setter,这样主窗口就可以监听菜单的按钮,等等 另一个选项是以编程方式在mainWindow中添加按

因此,我有一个分为两部分的应用程序——左边是一个自定义菜单,右边是一个包含所有“内容”(不同屏幕)的网格

它看起来像这样:

此外,当点击不同的按钮时,左侧的菜单将充满不同的按钮(例如,如果点击review按钮,菜单将变成以下内容):

我非常确定,我希望每个屏幕(位于右侧)都是它们自己的用户控件

但我的问题是:每个菜单都应该是用户控件吗?这使得使用它们有点困难。然后我不得不担心有getter/setter,这样主窗口就可以监听菜单的按钮,等等

另一个选项是以编程方式在mainWindow中添加按钮,这样我就可以在mainWindow.cs中添加侦听器(到网格中)


哪种方法更好?或者还有其他更受欢迎的方法吗?

整个窗口可以作为
网格轻松完成

左侧可以用按钮按住
堆叠面板
或其他布局控件


您可以使用
ContentPresenter
保存右侧的内容。当您触发按钮时,只需更改绑定内容,它将使用相应的用户控件进行更新。

整个窗口可以作为
网格轻松完成

左侧可以用按钮按住
堆叠面板
或其他布局控件


您可以使用
ContentPresenter
保存右侧的内容。当您触发按钮时,只需更改绑定的内容,它将使用相应的用户控件进行更新。

我认为您可能会像里德所说的那样使用网格进行更新。但是,如果您需要在其他地方重用它,我认为您应该使用一个单独的UserControl来代替。

我认为您可以像里德所说的那样使用网格。但是如果您需要在其他地方重用此控件,我认为您应该使用单独的UserControl。

也许我误解了您的意思,但我会使用
TabControl
,使用
TabStripPlacement=“Left”


如果您需要在左侧显示额外的空间来显示其他内容,您可以覆盖默认选项卡Control的
ControlTemplate
,并在
ControlTemplate
内的
TabPanel
中添加一组边距空间。或者,您可以让
TabItem
的标题在选中时与未选中时显示不同。

也许我误解了您的意思,但我会使用
TabControl
,使用
TabStripPlacement=“Left”


如果您需要在左侧显示额外的空间来显示其他内容,您可以覆盖默认选项卡Control的
ControlTemplate
,并在
ControlTemplate
内的
TabPanel
中添加一组边距空间。或者,您可以让
选项卡项的标题在选中时与未选中时显示不同。

WPF主要用于网格和画布。WPF主要用于网格和画布。这听起来很有趣。你是说我不应该为每个屏幕都有一个单独的文件?但这不意味着我的MainWindow.cs/xaml文件将是huuuuge吗?@toadams否-每个“屏幕”可以有一个单独的用户控件-ContentPresenter可以在运行时交换内容。ohhh,好的。我明白了!!因此,只要在c代码中定义按钮就可以了,如果需要的话,可以从stackpanel?@Toadams中添加/删除按钮——尽管我倾向于尝试做一些更优雅的事情。你不能只在xaml中定义它们?我可以,我可以在它们各自的面板/堆栈面板中定义它们,然后当按下按钮时,我更改菜单中显示的面板。这是更好的方法吗??(我知道运行前的所有按钮)听起来很有趣。你是说我不应该为每个屏幕都有一个单独的文件?但这不意味着我的MainWindow.cs/xaml文件将是huuuuge吗?@toadams否-每个“屏幕”可以有一个单独的用户控件-ContentPresenter可以在运行时交换内容。ohhh,好的。我明白了!!因此,只要在c代码中定义按钮就可以了,如果需要的话,可以从stackpanel?@Toadams中添加/删除按钮——尽管我倾向于尝试做一些更优雅的事情。你不能只在xaml中定义它们?我可以,我可以在它们各自的面板/堆栈面板中定义它们,然后当按下按钮时,我更改菜单中显示的面板。这是更好的方法吗??(运行前我知道所有按钮)
Start Date
End Date

Employee
Project
...