установка длинного текста в текстовом блоке с фиксированной шириной в wpf - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть сетка на фоне холста, которую можно увидеть на картинке.В 1-й строке я хочу обозначить столбцы.Я использовал TextBlock для этой цели.Но когда количество символов увеличено, я не могу видеть все содержимое TextBlock.eg. Когда содержимое - 9990, я вижу его, но в следующей метке - 10020, в котором больше символов.Я могу видеть только 1002. Размер прямоугольника 30, который рисует сетку.Ширина текстового блока равна 27, а размер текстового блока равен 3. введите описание изображения здесь Я не хочу изменять размер шрифта.

 <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 голосов
/ 18 февраля 2019

Как я уже упоминал в комментарии к вопросу, вы можете установить 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

...