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

C# WPF - Selected Item text is cut

ComboBox的SelectedItem中的文本被剪切。 示例中“手动加载”---->>“手动加载” 我尝试在模板中设置 Margin=0 和 Padding=0(如本主题“

我的组合框

<ComboBox x:Name="cmbLoad" Padding="5,0,0,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,0,5,0"  Padding="0"/>
                    <TextBlock Grid.Column="2" Margin="0" Padding="0" VerticalAlignment="Center" FontStyle="Italic" Text="{Binding Name}" />
                </Grid>
            </StackPanel>
        </DataTemplate>

结果

去掉 StackPanel 并设置 ColumnDefinitionsWidth:

<DataTemplate  x:Key="Id_Name_Template" >
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </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,0,5,0"  Padding="0"/>
        <TextBlock Grid.Column="2" Margin="0" Padding="0" VerticalAlignment="Center" FontStyle="Italic" Text="{Binding Name}" />
    </Grid>
</DataTemplate>

您可以使用 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>

或者 TextBox 本身中的 Runs:

<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>