nul*_*ull 5 wpf listbox itemtemplate itemscontrol
我对WPF世界很陌生,我在使用ItemsControl模板化项目时遇到了一些问题.我需要的是在ItemsControl(或类似)中模板元素(主要是按钮).
如果我使用以下XAML代码...
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type Button}">
<Border BorderBrush="AliceBlue"
BorderThickness="3">
<TextBlock Text="Templated!"/>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<Button>Not templated</Button>
<TextBlock>Text not templated</TextBlock>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
...我得到这个结果:http://img444.imageshack.us/img444/2167/itemscontrolnottemplate.gif
该ItemsControl的没有模板套用到按钮也不到TextBlock的控制.如果我将ItemsControl更改为ListBox,如下所示:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type Button}">
<Border BorderBrush="AliceBlue"
BorderThickness="3">
<TextBlock Text="Templated!"/>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
<Button>Not templated</Button>
<TextBlock>Text not templated</TextBlock>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
...然后我得到了这个结果:img814.imageshack.us/img814/6204/listboxtoomuchtemplatin.gif
现在模板应用于两个子控件(即使我将DataType设置为Button).
Ken*_*art 17
很难推断出你想要做什么,但看看这是否有帮助......
ItemsControl
如果它们已经是UI元素,那么普通旧的将不会将其子包装在容器中.一ListBox
,在另一方面,要求其孩子被包裹在一个ListBoxItem
.
如果项目被包装,则将ItemTemplate
应用该项目.如果物品没有被包裹,那么ItemTemplate
也可能不存在.
您几乎总是希望将数据项添加到您的ItemsControl
UI元素,而不是UI元素.然后,您将DataTemplate
s与这些数据元素相关联,以定义用于呈现它们的UI元素.
我认为解释你的最终目标对于进一步帮助是必要的.