我在资源文件中定义了一个样式,如下面的
<Style x:Name="ListBoxStyle" TargetType="ListBox" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name,Mode=TwoWay}"
Margin="5"
Foreground="Red">
</TextBlock>
<TextBlock Text="{Binding Age,Mode=TwoWay}"
Margin="5">
</TextBlock>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我对在数据模板中放置什么感到遗憾
<ListBox x:Name="MyList" ItemsSource="{Binding }">
<ListBox.ItemTemplate>
<DataTemplate>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我尝试使用
<ContentPresenter Style="{StaticResource ListBoxStyle}"></ContentPresenter>
甚至
<ContentControl Style="{StaticResource ListBoxStyle}"></ContentControl>`
但是出现了这个错误
无法分配属性'System.Windows.FrameworkElement.Style'。
如果我想提供自定义样式,我在DataTemplate
代码之间放什么?
答案 0 :(得分:0)
尝试:
<ListBox x:Name="MyList" ItemsSource="{Binding }">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name,Mode=TwoWay}"
Margin="5"
Foreground="Red">
</TextBlock>
<TextBlock Text="{Binding Age,Mode=TwoWay}"
Margin="5">
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这个shpuld解决了你的问题。
如果定义样式,则定义ListBox的外观(Background,Foreground,...)。 您可以在此处获取默认样式:http://msdn.microsoft.com/en-us/library/cc278062(v = vs.95).aspx
ItemTemplate(它是一个DataTemplate)定义了列表中单个元素的数据表示方式(使用绑定等等)。
如果要为单个元素定义样式,例如MouseOver,Focussed,...,您可以为ListBoxItems编写样式。您可以通过ItemContainerStyle将其添加到列表框中。
<ListBox ItemContainerStyle="{StaticResource YourResourceKey}"/>