C# WPF - 所选项目文本被剪切

问题描述

ComboBox 的 SelectedItem 中的文本被剪切。 在示例中“手动加载”---->>“手动加载” 我尝试在模板中设置 Margin=0 和 Padding=0(如本主题中的建议“https://stackoverflow.com/questions/48291742/c-sharp-wpf-comboBox-selected-item-text-cut-off ") 但没有任何效果

我的组合框

<ComboBox x:Name="cmbLoad" Padding="5,0" Grid.Column="1" ItemTemplate="{StaticResource ResourceKey=Id_Name_Template}" SelectionChanged="Cmb_Load_SelectionChanged" HorizontalAlignment="Stretch" HorizontalContentAlignment="Left"/>

我的模板

<DataTemplate  x:Key="Id_Name_Template" >
            <StackPanel >
                <Grid>
                    <Grid.ColumnDeFinitions>
                        <ColumnDeFinition />
                        <ColumnDeFinition />
                        <ColumnDeFinition />
                    </Grid.ColumnDeFinitions>
                    <TextBlock Grid.Column="0" Margin="0" Padding="0" VerticalAlignment="Center">
                        <Run FontWeight="Bold" Text="{Binding Id}"/>
                    </TextBlock >
                    <TextBlock Grid.Column="1" Text="-"  Margin="5,5,0"  Padding="0"/>
                    <TextBlock Grid.Column="2" Margin="0" Padding="0" VerticalAlignment="Center" FontStyle="Italic" Text="{Binding Name}" />
                </Grid>
            </StackPanel>
        </DataTemplate>

结果

enter image description here

解决方法

去掉StackPanel并设置Width的{​​{1}}:

ColumnDefinitions
,

您可以改用 StackPanel

<DataTemplate  x:Key="Id_Name_Template" >
    <StackPanel Orientation="Horizotnal">
        <TextBlock Text="{Binding Id}" FontWeight="Bold"/>
        <TextBlock Text=" - "/>
        <TextBlock Text="{Binding Name}" FontStyle="Italic"/>
    </StackPanel>
</DataTemplate>

或者只是 Run 本身中的 TextBox

<DataTemplate x:Key="Id_Name_Template" >
     <TextBlock VerticalAlignment="Center">
          <Run Text="{Binding Id}" FontWeight="Bold"/><Run Text=" - "/><Run Text="{Binding Name}" FontStyle="Italic"/>
     </TextBlock>
</DataTemplate>