|
|
1
0
我认为你不需要写一个面板或在面板中添加行为,如果你正确地建模你的类,你试图做的事情是可以使用具有选择项目能力的ItemsControls(即ListBox)实现的——我假设你使用的是MVVM。 这种方法的好处是,您不会创建和维护可能不需要的额外面板类型。此外,您的模型和视图模型中的所有内容都可以进行完整的单元测试。我建议尽可能使用或扩展现有的WPF控件和容器,但在这种情况下,我们可以不使用它。 视图模型
模型
看法
一旦用户单击ListBox中的一个项目,您应该在ItemVM中设置相应项目的IsSelected属性,在该属性更改时,您可以将该项目添加到列表中顶部元素的items集合中。 您可以完全控制如何对ItemModel进行模板化,顶部项目现在在Items集合中有一个项目,该项目可以按照您在图表中的方式显示。 关于动画 这可以使用代码隐藏或附加属性来完成,想法很简单,你知道用户在ListBox上点击的位置,你应该能够获得ListBox中顶部元素的位置,将DataTemplate从当前点击位置动画化到列表顶部 |