C# 我应该使用WPF用户控件吗?或者只是一个网格?
因此,我有一个分为两部分的应用程序——左边是一个自定义菜单,右边是一个包含所有“内容”(不同屏幕)的网格 它看起来像这样: 此外,当点击不同的按钮时,左侧的菜单将充满不同的按钮(例如,如果点击review按钮,菜单将变成以下内容): 我非常确定,我希望每个屏幕(位于右侧)都是它们自己的用户控件 但我的问题是:每个菜单都应该是用户控件吗?这使得使用它们有点困难。然后我不得不担心有getter/setter,这样主窗口就可以监听菜单的按钮,等等 另一个选项是以编程方式在mainWindow中添加按钮,这样我就可以在mainWindow.cs中添加侦听器(到网格中)C# 我应该使用WPF用户控件吗?或者只是一个网格?,c#,wpf,user-controls,menu,grid,C#,Wpf,User Controls,Menu,Grid,因此,我有一个分为两部分的应用程序——左边是一个自定义菜单,右边是一个包含所有“内容”(不同屏幕)的网格 它看起来像这样: 此外,当点击不同的按钮时,左侧的菜单将充满不同的按钮(例如,如果点击review按钮,菜单将变成以下内容): 我非常确定,我希望每个屏幕(位于右侧)都是它们自己的用户控件 但我的问题是:每个菜单都应该是用户控件吗?这使得使用它们有点困难。然后我不得不担心有getter/setter,这样主窗口就可以监听菜单的按钮,等等 另一个选项是以编程方式在mainWindow中添加按
哪种方法更好?或者还有其他更受欢迎的方法吗?整个窗口可以作为
网格轻松完成
左侧可以用按钮按住堆叠面板
或其他布局控件
您可以使用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
...