根据列表框选择更改 ContentTemplate
我在 StackPanel 中有一个列表框和一个边框,类似于以下内容:
<StackPanel Orientation="Horizontal">
<ListBox>
<ListBoxItem Content="People"/>
<ListBoxItem Content="Animals"/>
<ListBoxItem Content="Cars"/>
</ListBox>
<Border Width="200>
<ContentPresenter/>
</Border>
</StackPanel>
在列表框中选择一个项目时,我想相应地更改 ContentPresenter 中的内容,例如选择“人员”将更改模板以显示一系列与人员相关的输入字段选择动物将显示一系列与动物等相关的字段 - 其行为类似于 TabControl。
我认为我可以使用 DataTrigger 来实现此目的,该 DataTrigger 会更改边框中的 DataTemplate,但我不确定如何实现此目的。
有什么指点吗?
谢谢
I have a Listbox and a Border in a StackPanel similar to the following:
<StackPanel Orientation="Horizontal">
<ListBox>
<ListBoxItem Content="People"/>
<ListBoxItem Content="Animals"/>
<ListBoxItem Content="Cars"/>
</ListBox>
<Border Width="200>
<ContentPresenter/>
</Border>
</StackPanel>
When selecting an item in the listbox I would like to change the content in the ContentPresenter accordingly e.g. selecting People would change the template to display a series of input fields related to people where as selecting Animals would display a series of fields related to Animals etc. - the behavior of this would be akin to a TabControl.
I think I can achieve this with a DataTrigger which changes the DataTemplate in the Border but I'm not sure how to achieve this.
Any pointers?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 DataTrigger 切换 ContentTemplate,如下所示。
请注意,我将 ObservableCollection 绑定到一个具有名为 Name 的属性的简单对象 (Thing),并且我是否使用 ViewModel 将 ContentControl 的内容绑定到 ListBox 中的 SelectedItem。
这是 Thing 类:
You can toggle the ContentTemplate using a DataTrigger as follows.
Note, that I am binding an ObservableCollection to a simple object (Thing) with one property called Name, and am I binding the Content of the ContentControl to the SelectedItem in the ListBox using a ViewModel.
Here is the Thing class: