0
我已经创建了我自己的组合框样式以及样式组合框项目。下拉需要显示一些项目按钮和其他没有我的项目创建动态如下:WPF ComboboxItems与按钮
ComboBoxItem typeItem = new ComboBoxItem();
typeItem.Content = "Test";
typeItem.Tag = i;
MyCombobox.Items.Add(typeItem);
我的问题是我如何应用此风格的一些项目,而不是别人,我的两个comboboxitems是波纹管?
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="MinHeight" Value="{DynamicResource ResourceKey=MinimumIteractSizeDips}" />
<Setter Property="MinWidth" Value="{DynamicResource ResourceKey=MinimumIteractSizeDips}" />
<Setter Property="Foreground" Value="Black"/>
</Style>
<Style x:Key="MyComboBoxItem" TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="MinHeight" Value="{DynamicResource ResourceKey=MinimumIteractSizeDips}" />
<Setter Property="MinWidth" Value="{DynamicResource ResourceKey=MinimumIteractSizeDips}" />
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Grid>
<Label Content="{TemplateBinding Content}" Foreground="Black" Background="White" Height="26" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0"/>
<Button Grid.Column="2" Grid.Row="0" Content="Settings" Height="23" HorizontalAlignment="Left" Margin="2" Name="PositionSettings" VerticalAlignment="Center" Width="57"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
#dowhile非常感谢,我设法让它显示正确的风格。你是什么意思“你不应该为此重写样式,你想要的是DataTemplate和DataTemplate选择器”。我是否会按照worng的方式添加按钮? – user1145533 2012-07-24 09:29:27
像ComboBoxItem这样的控件被分成两部分,一部分由它的Style定义的Control本身负责应用程序的一般外观和感觉,如何进行选择,键盘导航等等。它的内容由DataTemplate就是ComboBoxItem内部显示的内容,可以这么说。除非你想大大地重新定义你的风格,否则我不会去碰它。但即使如此,我仍会考虑保留“业务逻辑”的风格,并使用Content和DataTemplates。同时记得标记帮助你接受的答案。 – dowhilefor 2012-07-24 09:38:53