我目前正在设计ComboBox
看起来像Visual Studio中的那个(以及颜色主题)。我已经完成了大部分样式,但在显示当前所选对象的ContentPresenter
停了下来。
XAML的内容如下所示:
<ContentPresenter Margin="2" IsHitTestVisible="False" VerticalAlignment="Center" HorizontalAlignment="Stretch"
Name="ContentSite"
ContentTemplate="{TemplateBinding ComboBox.SelectionBoxItemTemplate}"
Content="{TemplateBinding ComboBox.SelectionBoxItem}" />
问题是,默认SelectionBoxItemTemplate
似乎忽略了ComboBox的前景值:
<ComboBox Margin="4" SelectedIndex="0" Foreground="Red">
<ComboBoxItem>First</ComboBoxItem>
<ComboBoxItem>Second</ComboBoxItem>
<ComboBoxItem>Third</ComboBoxItem>
</ComboBox>
第一个是不可编辑的,SelectionBoxItemTemplate
启动并强制将文本的颜色设置为黑色(即使Foreground
手动设置为红色,而风格设置为另一种非黑色)。
如何将当前前景色传递给ContentPresenter
?如果我不能,我在哪里可以找到SelectionBoxItemTemplate
的工作替代品? (就ComboBox
)
答案 0 :(得分:0)
我认为它确实忽略了Foreground
颜色。如果您将以下(正常)ComboBox
控件添加到XAML ......:
<ComboBox Foreground="Red">
<ComboBoxItem>One</ComboBoxItem>
<ComboBoxItem>Two</ComboBoxItem>
<ComboBoxItem>Three</ComboBoxItem>
<ComboBoxItem>Four</ComboBoxItem>
</ComboBox>
...您会看到设置Foreground
会更改所选的项目文字。我想也许你的问题在于你的 ControlTemplate
。现在我不能百分百肯定,但我认为你的ContentPresenter
应该是这样的:
<ContentPresenter Margin="2" IsHitTestVisible="False" VerticalAlignment="Center"
HorizontalAlignment="Stretch" Name="ContentSite" ContentTemplate="{TemplateBinding
SelectionBoxItemTemplate}" Content="{TemplateBinding SelectionBoxItem}" />