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
并设置 ColumnDefinitions
的 Width
:
<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
本身中的 Run
s:
<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>
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
并设置 ColumnDefinitions
的 Width
:
<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
本身中的 Run
s:
<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>