在wpf

时间:2019-02-18 12:39:46

标签: c# wpf canvas textblock

我在画布背景上有网格,可以在图片中看到。在第一行,我要标记列。我已经为此目的使用了TextBlock。但是当字符数增加时,我看不到TextBlock的全部内容。例如,当内容为9990时,我可以看到它,但是在下一个标签中,内容为10020,其中包含更多字符。我只能看到1002。矩形大小为30,即绘制网格。 TextBlock宽度为27,TextBlock的边距为3。enter image description here我不想更改字体大小。

 <Canvas  x:Name="back_canvas"  Height="12000"  Width="{Binding  CanvasWidth , UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" VerticalAlignment="Top" HorizontalAlignment="Left"  Margin="0,0,10,0"   >
                <Canvas.Background>
                        <DrawingBrush TileMode="Tile" Viewport="0,0,30,30"  ViewportUnits="Absolute"> 

                            <DrawingBrush.Drawing>
                                <GeometryDrawing>
                                    <GeometryDrawing.Geometry>
                                        <RectangleGeometry Rect="0,0,30,30"/>
                                    </GeometryDrawing.Geometry>
                                    <GeometryDrawing.Pen>
                                        <Pen Brush="Gray" Thickness="1"/>
                                    </GeometryDrawing.Pen>
                                </GeometryDrawing>
                            </DrawingBrush.Drawing>
                        </DrawingBrush>
                    </Canvas.Background>


                <ItemsControl ItemsSource="{Binding TimeAxis}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Name="horizontalLabels" Orientation="Horizontal"  />
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding}"  Margin="0,0,3,0"    Width="27"  Background="Red" Height="Auto"  >

                            </TextBlock>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
</Canvas>

1 个答案:

答案 0 :(得分:1)

正如我在对该问题的评论中已经提到的那样,您可以将TextTrimming中的TextBlock设置为CharacterEllipsis,以表示某些部分被切除,并在工具提示中添加完整的字符串。

这看起来像这样:

<ItemsControl.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding}" ToolTip="{Binding}" TextTrimming="CharacterEllipsis" Margin="0,0,3,0" Width="27" Background="Red" Height="Auto"/>
    </DataTemplate>
</ItemsControl.ItemTemplate>

这应该将诸如10020之类的大数字从| 1002 |更改为| 100... |之类,并带有提示为10020的工具提示