WPF中的ListBox模板/样式

时间:2013-06-10 12:22:37

标签: visual-studio-2010 xaml c#-4.0 wpf-controls wpf-4.0

我在WPF表单上有一个ListBox,具有以下外观:

<ListBox x:Name="myListBox" Width="200" Height="200" Background="White">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{Binding Path=Name}" FontSize="16" FontStyle="Italic"/>
                                <Image Source="Images/myImage.png"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

我如何将其添加到模板/样式中,以便所有ListBox都可以引用一个模板并且所有模板具有相同的外观?

我对如何创建模板感到困惑,

由于

1 个答案:

答案 0 :(得分:0)

制作DataTemplateresource,您可以将其置于适当范围的Resources集合中:

<UserControl.Resources>
   <DataTemplate x:Key="MyDataTemplate">
       ....
   </DataTemplate>
</UserControl.Resources>

然后,您可以访问ListBox中的资源:

<ListBox ItemTemplate="{StaticResource MyDataTemplate}">

或者,您可以将DataTemplate添加为Style

的一部分
<Style TargetType="{x:Type ListBox}" x:Key="MyStyle">
   <Setter Property="ItemTemplate">
       <Setter.Value>
          <DataTemplate>
             ...
          </DataTemplate>
       </Setter.Value>
   </Setter>  
</Style>

<ListBox Style="{StaticResource MyStyle}">

您还可以通过删除ListBox中的x:Key来明确定位所有Style个实例。

每个框架级元素都有一个Resources集合,直到应用程序级别,因此请选择适当的集合来定位适当范围的元素。另请阅读static and dynamic resources以及最合适的标记扩展名。