C# WPF - 选定项文本被剪切
Posted
技术标签:
【中文标题】C# WPF - 选定项文本被剪切【英文标题】:C# WPF - Selected Item text is cut 【发布时间】:2021-09-12 11:34:19 【问题描述】:ComboBox 的 SelectedItem 中的文本被剪切。 在示例中“手动加载”---->>“手动加载” 我尝试在模板中设置 Margin=0 和 Padding=0 (如本主题“https://***.com/questions/48291742/c-sharp-wpf-combobox-selected-item-text-cut-off ") 但没有任何效果
我的组合框
<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>
结果
【问题讨论】:
【参考方案1】:去掉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” 解决了我 90% 的 WPF 格式问题。【参考方案2】:您可以改用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
s 在 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>
【讨论】:
以上是关于C# WPF - 选定项文本被剪切的主要内容,如果未能解决你的问题,请参考以下文章
如何从选定的 WPF ComboBox 项 C# 中显示内容
如何使用正则表达式(或 C# 函数)在一个变量中剪切 TEXT MESSAGE 并从此文本中剪切第二个变量 USERNAME?