如何在XAML中为ComboBoxItems设置StyleSheets

时间:2015-04-14 13:05:54

标签: xaml windows-phone-8 windows-phone windows-phone-8.1 windows-phone-8-emulator

<ComboBox 
        Foreground="Black"
        BorderBrush="Black"
        HorizontalAlignment="Left" Margin="108,280,0,0" VerticalAlignment="Top" Width="200" Style="{StaticResource ComboBoxStyl}"><ComboBoxItem Content="One" IsSelected="True" Style="{StaticResource ComboBoxItemStyle1}"/>
        <ComboBoxItem Content="Two" Style="{StaticResource ComboBoxItemStyle1}"/>
        <ComboBoxItem Content="Three" Style="{StaticResource ComboBoxItemStyle1}"/>
        <ComboBoxItem Content="Four" Style="{StaticResource ComboBoxItemStyle1}"/>
        <ComboBoxItem Content="Five" Style="{StaticResource ComboBoxItemStyle1}"/>
    </ComboBox>

这里我提到了每个ComboBoxItem的样式表。我只想引用样式表一次(相对于ComboBoxItem)。因此,当动态数据项添加到样式时,它们将自动应用。

2 个答案:

答案 0 :(得分:0)

你会想要使用这样的东西:

<ComboBox x:Name="combobox1" ItemsSource="{Binding ItemList}">
   <ComboBox.ItemTemplate>
      <DataTemplate>
         <!-- define data template and/or style, example: -->
         <TextBlock Style="{StaticResource TextBlockItemStyle}" Text="{Binding ItemText}"/>
      </DataTemplate>
   </ComboBox.ItemTemplate>
</ComboBox>

此外,由于您要动态添加/删除项目,最好将项目源绑定到您可以在c#中轻松编辑的列表或集合。您可能想要创建一个类:

public class ComboBoxListItem
{
   public string ItemText {get; set;}
   //any other useful property
}

然后在您的页面中创建一个List<ComboBoxListItem> ItemList,并在页面的构造函数中,使用您想要的任何数据初始化列表。然后在您的XAML DataTemplate中,只需在想要显示文本的位置插入"{Binding ItemText}"(就像我在文本块中所做的那样)。

答案 1 :(得分:0)

<ComboBox
        SelectedIndex="0"
        Foreground="Black"
        ItemContainerStyle="{StaticResource ComboBoxItemStyle1}"
        BorderBrush="Black"
        HorizontalAlignment="Left" Margin="108,280,0,0" VerticalAlignment="Top" Width="200" Style="{StaticResource ComboBoxStyl}">
        <ComboBoxItem Content="One"  />
        <ComboBoxItem Content="Two" />
        <ComboBoxItem Content="Three" />
        <ComboBoxItem Content="Four" />
        <ComboBoxItem Content="Five" />
</ComboBox>

使用“ItemContainerStyle”引用我们为ComboBoxItems创建的sylesheet,无论是静态还是动态声明,我们都可以轻松更改ComboBoxItems的样式。