我正在建立一个应用程序,我想去设计,这可能会提醒一个dockpanel.
我想要的是,左侧(或左侧面板)的按钮代表应用程序的不同区域(例如"Milk","Bread"),然后在中间面板中具有不同的"视图".
我已经尝试过,正在制作一个带有"Frontpage"的应用程序,以及更改整个窗口/用户控件的按钮 - 但这不会给我静态区域/面板.
我不想使用tabtitemstrip是垂直的tabcontrol - 但它有点像我想要的功能.
有任何想法吗?
下面是一张希望设计的图片,有点想一想我的想法..任何帮助赞赏:)
http://s57.photobucket.com/user/RolleKn/media/wpfdesign_zps3737b014.jpg.html
que*_*atl 13
如果您使用WPF,请使用ContainerControl或ContentPresenter为此.
通常,"切换可见性开/关"不是一个好方法.它强制UI创建所有对象,甚至是那些不可见的对象,并处理它们的数据和事件等.
你需要手动切换它.
WPF为您提供了许多可以为您节省的机制.有些人比其他人聪明,有些则没有.
其中的最基本的WPF机制是Control和它的Template属性.您可以使用单个替换整个Grid + Contents + SwitchingVisibility概念Control并切换它Template:
<Window.Resources>
<ControlTemplate x:Key="panel1"> ..carrots.. </ControlTemplate>
<ControlTemplate x:Key="panel2"> ..cucubers.. </ControlTemplate>
<ControlTemplate x:Key="panel3"> ..donkey.. </ControlTemplate>
...
</Window.Resources>
<Grid x:Name="LayoutRoot">
<Control x:Name="foo" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
现在,如果你得到foo并设置它.Template并将其设置为panel1,那么"胡萝卜"就会显示出来.如果你把它设置为panel3,驴.等等.
这是非常强大的,但由于我不会涉及的其他一些事情,它不会非常方便.有书籍和教程深入解释模板.此外,这种机制实际上并非设计用于此类任务.这是最基本的一个,如果你想在WPF中工作,这是一件好事,但这里有更合适的.
第二个强大而又基本的机制是ContentControl/ContentPresenter.它们几乎以相同的方式工作(实际上CC在内部使用CP),所以我将跳过它.
ContentControl是一个智能控件,它知道如何根据您尝试呈现的数据自动选择正确的模板.
所以:
<Window.Resources>
<DataTemplate DataType="CarrotData"> ..carrots.. </..>
<DataTemplate DataType="CucumberData"> ..cucubers.. </..>
<DataTemplate DataType="DonkeyData"> ..donkey.. </..>
...
</Window.Resources>
<Grid x:Name="LayoutRoot">
<ContentControl x:Name="foo" Content="{Binding ..}" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
请注意从"ControlTemplate"到"DataTemplate"的更改.
现在,使用此设置,您甚至无需手动切换模板.您只需获取"foo"并将其内容设置为:
一旦设置了要显示的数据(即foo.Content = carrots[5]),ContentControl将选择要显示的相关模板.
你可以绑定的Content属性来任何东西.如果你有一些包含胡萝卜/驴的数据类并且有一个属性CurrentThing,你可以绑定它,ContentControll将自动切换视图以及对CurrentThing的更改.
这是基础知识.在我试图简要介绍的几乎任何一点上,还有更多内容.现在,请离开ControlTemplates.阅读有关DataTemplates和Bindings的信息.阅读ContentPresenter(显示1个项目的1个模板)和ItemsControl(显示N个项目+模板).然后,阅读一些有关MVVM模式的内容.
您很快就会发现"将所有内容都放在一个网格中"和"切换可见性"是一种奇怪的方法.
但是,如果我没有提到所有内容都包含成本,我就不公平.与手动完成所有操作相比,模板和绑定的广泛使用使您的应用程序变得更慢.但通常情况下,手动操作并不值得.
| 归档时间: |
|
| 查看次数: |
19959 次 |
| 最近记录: |