我对 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>
...我得到这个结果:http: //img444.imageshack.us/img444/2167/itemscontrolnottemplate.gif
ItemsControl没有将模板应用于Button或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>
...然后我得到这个结果:img814.imageshack.us/img814/6204/listboxtoomuchtemplatin.gif
现在模板应用于两个子控件(即使我将DataType设置为仅按钮)。