C# 如何使用字符串格式修剪绑定数据
我有一个带有datagridview的有界数据库,我试图用stringFormat修剪有界字符串,但我没有找到如何做。 (我不想在c#文件中创建属性并对其进行修剪)C# 如何使用字符串格式修剪绑定数据,c#,wpf,xaml,C#,Wpf,Xaml,我有一个带有datagridview的有界数据库,我试图用stringFormat修剪有界字符串,但我没有找到如何做。 (我不想在c#文件中创建属性并对其进行修剪) XAML是一种标记语言。它真的没有办法修剪弦。应用StringFormat与能够调用某些方法(如Trim())来操作字符串是不同的,并且不能在XAML中调用方法 您应该使用值转换器来调整值,如下所示: 或者,应该从源属性返回已修剪的字符串 编辑:如果在文本长度超出可用内容区域时,在能够绘制省略号代替剩余文本的上下文中提及修剪,则
XAML是一种标记语言。它真的没有办法修剪弦。应用StringFormat与能够调用某些方法(如Trim())来操作字符串是不同的,并且不能在XAML中调用方法
您应该使用值转换器来调整值,如下所示:
或者,应该从源属性返回已修剪的字符串
编辑:如果在文本长度超出可用内容区域时,在能够绘制省略号代替剩余文本的上下文中提及修剪,则可以按照Chris W的建议设置ElementStyle的TextTrimming属性。您有几个选项来实现所需。不幸的是,不能在绑定中使用字符串格式表达式修剪文本。也就是说,我会给你一些选择,但我认为最简单的是你说你不会创建的属性 选项1:使用转换器: 您可以创建转换器并在绑定中使用它: 优点:当您使用它时,它是可读的,您可以清楚地看到它的意图:
缺点::
希望这有帮助 实现这一点有多种方法。您可以创建一个自定义的
CellStyle
,您可以在DataGrid.Resources
中设置Style模板
,以在整个DataGrid中点击TextBlock
的TargetType
(这是DataGridTextColumn
在运行时呈现的内容)。一般来说,如果你只想在单个实例上使用它,我会这样做,我假设你正在尝试这样做
<DataGridTextColumn Binding="{Binding type}" Width="100">
<DataGridTextColumn.ElementStyle>
<!-- Since it's already set as "NoWrap" by default,
just need to set trimming which will be invoked
by your set width you already have. -->
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
或者像这样,
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextTrimming="Character Ellipses"
Text="{Binding type}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
…或其他方式。只需以某种方式点击最终结果TextBlock
另外,由于已经有一个ElementStyle被指定为资源,因此可以将该示例添加到其中,尽管我将其从该示例中剥离出来以使其内联。我需要看看你的资源,让我给你看
希望这有帮助,节日快乐。是一个有很多元素的属性。
<DataGridTextColumn Binding="{Binding type}" Width="100">
<DataGridTextColumn.ElementStyle>
<!-- Since it's already set as "NoWrap" by default,
just need to set trimming which will be invoked
by your set width you already have. -->
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextTrimming="Character Ellipses"
Text="{Binding type}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>