问题描述
我正在设计 WPF ComboBox 的样式,以便 ComboBoxItems 有一些额外的数据。下拉菜单中的项目看起来很棒,但是一旦被选中,显示的项目就不会拉伸/填充组合框 - 它全部向左倾斜。我已经做了足够的挖掘来弄清楚这与应用于控件的 MaterialDesign 主题有关。如果演示项目中没有引用 MeterialDesign,代码将按预期工作。
<ComboBox Width="150"
Margin="2"
HorizontalContentAlignment="Stretch" <!-- No Effect //-->
materialDesign:HintAssist.Hint="Select Item"
ItemsSource="{StaticResource ExampleItems}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="*" />
<ColumnDeFinition Width="Auto" />
</Grid.ColumnDeFinitions>
<TextBlock Grid.Column="0" Text="{Binding displayText}" />
<Ellipse Grid.Column="1" Width="10" Height="10" Fill="{Binding Color}"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
<!-- No Effect //-->
<!--<ComboBox.ItemContainerStyle>
<Style targettype="ComboBoxItem" BasedOn="{StaticResource MaterialDesignComboBoxItemStyle}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ComboBox.ItemContainerStyle>-->
</ComboBox>
我已经尝试了几乎所有我能做的事情,但没有运气 - 包括 DataTemplate、堆栈面板、停靠面板等中的各种控件......
我在这里创建了一个最低限度的可重现示例:ComboBoxDemo Project
我已经包含了从 Blend 中提取的 ComboBox 样式,以尝试深入了解 MaterialDesign 在普通模板之上所做的事情。我看到所选项目有一个 ItemContainerStyle,但它看起来像是将 HorizontialContentAlignment 绑定到链上。手动将其设置为 Stretch 没有帮助。
所以希望那里的 Xaml 专家可以查明问题...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)