【发布时间】:2013-04-09 17:13:57
【问题描述】:
所以我的 WPF 应用程序中有一个列表框和一个工具栏。工具栏只有常规控件,列表框有垂直扩展器。
我需要列表框有一组不同的扩展器,具体取决于单击的按钮。现在看起来是这样的:
<ListBox>
<local:Select_Analysis_Panel/>
</ListBox>
其中local:Select_Analysis_Panel 是包含扩展器的单独用户控制文件。单击按钮时动态更新 ListBox 控件内容的最佳方法是什么?
在过去的几个小时里,我一直在尝试为每个扩展器集使用 set DataTemplates 并将其绑定到项目控件属性,但使用下面的代码几乎没有用处。我只是想在设置 MVVM 接口之前布置基本框架。后来我打算用你知道的ItemsSource="{Binding WhatExpanderViewModelProperty}" 或类似的东西替换ItemsSource="Network_anal"。
<ListBox Width="250" Margin="5,0,0,0">
<ListBox.Resources>
<DataTemplate DataType="Select_Analysis_Panel">
<local:Select_Analysis_Panel/>
</DataTemplate>
<DataTemplate x:Key="Network_anal" DataType="NetworkAnalysis">
<local:NetworkAnalysis/>
</DataTemplate>.Resources>
<ListBox.Template>
<ControlTemplate>
<Border Background="Red"/>
</ControlTemplate>
</ListBox.Template>
<ItemsControl ItemsSource="Network_anal"/>
</ListBox>
我是否采取了正确的方法来解决这个问题?
这就是我想要做的。当点击“文件”按钮时,下面的侧边栏会显示这两个扩展器:
当“网络设计”按钮时,这些扩展器会显示:
【问题讨论】:
-
再发一张你需要的截图……
-
顺便问一下,“节点编辑器”的一切进展如何?
-
非常非常非常非常感谢你,仍然使用你的模板,太棒了。立即获取屏幕截图
-
哇....我非常喜欢
-
是的,它一直伴随着兄弟!您对使用 MVVM 的建议非常有帮助
标签: c# .net wpf data-binding