MaterialDesignThemes ComboBox Selected Item 模板问题

问题描述

我正在设计 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>

Incorrect Selected Item and Correct drop down items

我已经尝试了几乎所有我能做的事情,但没有运气 - 包括 DataTemplate、堆栈面板、停靠面板等中的各种控件......

在这里创建了一个最低限度的可重现示例:ComboBoxDemo Project

我已经包含了从 Blend 中提取的 ComboBox 样式,以尝试深入了解 MaterialDesign 在普通模板之上所做的事情。我看到所选项目有一个 ItemContainerStyle,但它看起来像是将 Horizo​​ntialContentAlignment 绑定到链上。手动将其设置为 Stretch 没有帮助。

所以希望那里的 Xaml 专家可以查明问题...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)