1
36
假设我有一个项目控制。我想使用一个定制的面板,当你滚动的时候,它可以将物品快速地输入和输出,这叫做swooppanel。现在,如何告诉itemscontrol使用我的swooppanel来包含它创建的模板? 快速方法是在itemscontrol上设置itemspanel:
然而,有时候这对你来说并不管用。也许您希望自定义Swooppanel在用户界面中的显示方式,而解决此问题的唯一方法是更改itemsControl的控制模板。现在,您可以直接将您的swooppanel添加到控件模板中,并使用属性将其标记为项控件将放置其创建的所有模板化项的项列表。
你必须这样做还是那样做?不,一个比另一个更有利吗?好吧,第二种方法允许您对UI进行更多的控制,第一种方法更简单。真的,你自己挑吧。我从来没有亲自做过第二种方式,但我认为可能会有一些地方它可能是有用的。 |
2
12
见 http://msdn.microsoft.com/en-us/library/system.windows.controls.panel.isitemshost(v=vs.90).aspx 本质上,本文所说的是,如果您要替换列表框的ControlTemplate并需要新的布局,请在某些面板(例如StackPanel)上设置isitemshost=true。然后,列表框中的任何项都将自动作为stackpanel的子项添加。如果列表框的方向是水平的,则列表框将是水平的。 另一种方法是将列表框的itemspanel属性设置为itemstemplate,在该模板中有stackpanel。在这种情况下,列表框项将添加到stackpanel子项,就像在第一种情况下一样。但是,您不需要设置isitemshost=true,它绝对没有任何效果。这是通过设置itemspanel属性来实现的。 |
3
0
请提供更多详细信息!
虽然以上所有答案在技术上都是正确的,但它们实际上缺少解释
按你的方式去做!
在一个典型
正如你所看到的,有一个
所以,如果模板中没有定义面板,那么它来自哪里?这就是
使用
我的路还是高速公路!
但是,如果您不希望有人能够更改您的面板,因为它需要一些自定义实现,而其他任何东西都会破坏该功能,该怎么办?在这种情况下,你
不要
使用一个
这里有与上面相同的例子,但不是
在这种情况下,因为没有
综上所述…
概括地说,如果您是控件作者,并且希望让用户能够交换用于布局项目的面板,请为您的
如果要“锁定”控件使用的面板,请不要使用
希望这能清楚地说明到底发生了什么。 |
Yoni · 如何从代码隐藏中引用“我的项目”控件中的另一个控件? 7 年前 |
Sam White · 实际高度增加但不收缩 7 年前 |
herohuyongtao · 如何获取当前ItemsControl项的索引? 10 年前 |
Boas Enkler · WinRT中可缩放的水平项目控件 11 年前 |