Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 3 / 1
Регистрация: 10.09.2014
Сообщений: 36
1

Авторазмер для TextBlock

03.08.2016, 19:21. Показов 2458. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Проблема в том, что текстблок находящийся в контейнере канвас, не растягивается по заданному параметру margin. Вот пример:
XML
1
2
3
4
5
6
7
8
<Canvas Margin="5">
    <TextBlock Text="Идентификатор: " Margin="5, 0, 0, 0" Width="150"/>
    <TextBlock Text="{Binding Identifier}" Margin="155, 0, 10, 0"/>
    <TextBlock Text="Борд: " Margin="5, 17, 0, 0" Width="150"/>
    <TextBlock Text="{Binding Board}"  Margin="155, 17, 10, 0"/>
    <TextBlock Text="Расположение *.cfr-файла: " Margin="5, 34, 0, 0" Width="150"/>
    <TextBlock Text="{Binding FullPath}" Margin="155, 34, 10, 1" ToolTip="{Binding FullPath}" Width="Auto" TextTrimming="WordEllipsis"/>
</Canvas>
Размеры у тех текстблоков для которых задан биндинг получаются "по контенту", то есть, равны содержимому, хотя маргин и указан. В чём может быть проблема?
П.С. задавать ширину через width нельзя, так как канвас может менять свою ширину
Вот ещё скриншот: (поставил красный фон что бы видно было размеры)
Миниатюры
Авторазмер для TextBlock  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2016, 19:21
Ответы с готовыми решениями:

InotifyPropertyChanged и TextBlock (для самых маленьких)
Элд Хасп, пошел по ссылке предложенный вами. Великий труд, но я чуть не утонул в нем....

Всплывающее окно (ToolTip) для TextBlock
Здравствуйте! Помогите пожалуйста со следующей проблеммой. Есть TextBlock в котором находится...

Задать значения для TextBlock которые в Style
Добрый день. Вот есть у меня стиль : &lt;Style x:Key=&quot;dgHeaderPriceListLinePriceStyle&quot;...

Авторазмер в Layout
Добрый вечер. Столкнулся с проблемой. Необходимо что б был авторазмер для лайаута. В зависимости...

8
Заблокирован
03.08.2016, 21:07 2
ZHSV, зачем вы вообще Canvas используете? Замените на Grid и будет вам счастье.
1
3 / 3 / 1
Регистрация: 10.09.2014
Сообщений: 36
03.08.2016, 22:35  [ТС] 3
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
ZHSV, зачем вы вообще Canvas используете? Замените на Grid и будет вам счастье.
До этого я использовал грид с настроенными rows & columns но так как этот участок у меня используется в темплейте для ListViewItem'a, то при привышении размера грида текстбоксом, грид также становился шире и получается что ListViewItem по ширине выходил за пределы ListView, а мне нужно что бы размер ListViewItem"а был "динамичным", но естественно не более чем размер самого ListView. Вот так вот...
0
Заблокирован
03.08.2016, 22:38 4
Цитата Сообщение от ZHSV Посмотреть сообщение
До этого я использовал грид с настроенными rows & columns но так как этот участок у меня используется в темплейте для ListViewItem'a, то при привышении размера грида текстбоксом, грид также становился шире и получается что ListViewItem по ширине выходил за пределы ListView, а мне нужно что бы размер ListViewItem"а был "динамичным", но естественно не более чем размер самого ListView. Вот так вот...
ZHSV, разметку покажите. Где-то что-то неправильно сделали значит...

Добавлено через 21 секунду
и скриншоты для наглядности проблемы было бы неплохо увидеть
1
3 / 3 / 1
Регистрация: 10.09.2014
Сообщений: 36
03.08.2016, 23:28  [ТС] 5
Ev_Hyper,
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
ZHSV, разметку покажите. Где-то что-то неправильно сделали значит...
и скриншоты для наглядности проблемы было бы неплохо увидеть
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<Style x:Key="TreesItemsListViewStyle" TargetType="ListView">
        <Setter Property="Foreground" Value="{StaticResource TreesArrayFontBrush}"/>
        <Setter Property="SelectionMode" Value="Single"/>
        <Setter Property="Grid.IsSharedSizeScope" Value="True" />
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style>
                    <Setter Property="ListViewItem.OverridesDefaultStyle" Value="True"/>
                    <Setter Property="ListViewItem.Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <ControlTemplate.Resources>
                                    <Storyboard x:Key="Selected">
                                        <DoubleAnimation Storyboard.TargetProperty="StrokeThickness" Duration="0:0:0.125" To="4"/>
                                        <ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="{StaticResource TreesArraySelectedColor}"/>
                                    </Storyboard>
                                    <Storyboard x:Key="Highlighted">
                                        <DoubleAnimation Storyboard.TargetProperty="StrokeThickness" Duration="0:0:0.125" To="3"/>
                                        <ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="{StaticResource TreesArrayHighlightedColor}"/>
                                    </Storyboard>
                                    <Storyboard x:Key="Normal">
                                        <DoubleAnimation Storyboard.TargetProperty="StrokeThickness" Duration="0:0:0.125" To="2"/>
                                        <ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="{StaticResource TreesArrayNormalColor}"/>
                                    </Storyboard>
                                </ControlTemplate.Resources>
                                <Grid x:Name="TreesArrayContainer" Height="60">
                                    <Grid.Cursor>Hand</Grid.Cursor>
                                    <Rectangle x:Name="BackgroundRect" Fill="{StaticResource TreesArrayNormalBrush}" Stroke="{StaticResource WindowBorder}" RadiusX="7" RadiusY="7" StrokeThickness="2">
                                        <Rectangle.Style>
                                            <Style>
                                                <Style.Triggers>
                                                    <MultiDataTrigger>
                                                        <MultiDataTrigger.Conditions>
                                                            <Condition Binding="{Binding IsMouseOver, ElementName=TreesArrayContainer}" Value="True"/>
                                                            <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}}" Value="False"/>
                                                        </MultiDataTrigger.Conditions>
                                                        <MultiDataTrigger.EnterActions>
                                                            <BeginStoryboard Storyboard="{StaticResource Highlighted}"/>
                                                        </MultiDataTrigger.EnterActions>
                                                        <MultiDataTrigger.ExitActions>
                                                            <BeginStoryboard Storyboard="{StaticResource Normal}"/>
                                                        </MultiDataTrigger.ExitActions>
                                                    </MultiDataTrigger>
                                                    <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}}" Value="True">
                                                        <DataTrigger.EnterActions>
                                                            <BeginStoryboard Storyboard="{StaticResource Selected}"/>
                                                        </DataTrigger.EnterActions>
                                                        <DataTrigger.ExitActions>
                                                            <BeginStoryboard Storyboard="{StaticResource Normal}"/>
                                                        </DataTrigger.ExitActions>
                                                    </DataTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </Rectangle.Style>
                                    </Rectangle>
                                    [U]<Grid Margin="5">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="Auto"></ColumnDefinition>
                                            <ColumnDefinition Width="Auto"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition Height="Auto"/>
                                        </Grid.RowDefinitions>
                                        <TextBlock Text="Идентификатор: " TextAlignment="Right" Grid.Column="0" Grid.Row="0"/>
                                        <TextBlock Text="{Binding Identifier}"  Grid.Column="1" Grid.Row="0" Background="Red"/>
                                        <TextBlock Text="Борд: " TextAlignment="Right" Grid.Column="0" Grid.Row="1"/>
                                        <TextBlock Text="{Binding Board}" Grid.Column="1" Grid.Row="1" Background="Red"/>
                                        <TextBlock Text="Расположение *.cfr-файла: " TextAlignment="Right" Grid.Column="0" Grid.Row="2"/>
                                        <TextBlock Text="{Binding FullPath}" ToolTip="{Binding FullPath}" TextTrimming="WordEllipsis" Grid.Column="1" Grid.Row="2" Background="Red"/>
                                    </Grid>[/U]
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderBrush" Value="{StaticResource WindowBorder}"/>
        <Setter Property="BorderThickness" Value="0"/>
    </Style>
Скриншот:
Миниатюры
Авторазмер для TextBlock  
0
3 / 3 / 1
Регистрация: 10.09.2014
Сообщений: 36
03.08.2016, 23:32  [ТС] 6
то есть, сама проблема в том, что в данном случае item шире чем ListView, а задать через width нельзя, так как ListView может также менять ширину, биндить пробовал но результат такой же
0
Заблокирован
04.08.2016, 12:56 7
ZHSV,
XML
1
<Grid Margin="5">
XML
1
<Grid x:Name="TreesArrayContainer" Height="60">
Margin, x:Name="TreesArrayContainer" Height="60" вообще уберите.

Теперь смотрите на результат и напишите, что еще хотите исправить.
1
3 / 3 / 1
Регистрация: 10.09.2014
Сообщений: 36
04.08.2016, 15:47  [ТС] 8
Лучший ответ Сообщение было отмечено Ev_Hyper как решение

Решение

Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Margin, x:Name="TreesArrayContainer" Height="60" вообще уберите.
Что-то опять не так... Результат тот же, только отступы убрались (5пикс., те которые заданы через маргин)

Добавлено через 18 минут
Проблема решена биндингом параметра MaxWidth для TreeViewItem к параметру ActualWidth ListView.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<Style x:Key="TreesItemsListViewStyle" TargetType="ListView">
        <Setter Property="Foreground" Value="{StaticResource TreesArrayFontBrush}"/>
        <Setter Property="SelectionMode" Value="Single"/>
        <Setter Property="Grid.IsSharedSizeScope" Value="True" />
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style>
                    <Setter Property="ListViewItem.OverridesDefaultStyle" Value="True"/>
                    <Setter Property="ListViewItem.Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <ControlTemplate.Resources>
                                    <Storyboard x:Key="Selected">
                                        <DoubleAnimation Storyboard.TargetProperty="StrokeThickness" Duration="0:0:0.125" To="4"/>
                                        <ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="{StaticResource TreesArraySelectedColor}"/>
                                    </Storyboard>
                                    <Storyboard x:Key="Highlighted">
                                        <DoubleAnimation Storyboard.TargetProperty="StrokeThickness" Duration="0:0:0.125" To="3"/>
                                        <ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="{StaticResource TreesArrayHighlightedColor}"/>
                                    </Storyboard>
                                    <Storyboard x:Key="Normal">
                                        <DoubleAnimation Storyboard.TargetProperty="StrokeThickness" Duration="0:0:0.125" To="2"/>
                                        <ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="{StaticResource TreesArrayNormalColor}"/>
                                    </Storyboard>
                                </ControlTemplate.Resources>
                                <Grid x:Name="TreesArrayContainer" MaxWidth="{Binding ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}">
                                    <Grid.Cursor>Hand</Grid.Cursor>
                                    <Rectangle x:Name="BackgroundRect" Fill="{StaticResource TreesArrayNormalBrush}" Stroke="{StaticResource WindowBorder}" RadiusX="7" RadiusY="7" StrokeThickness="2">
                                        <Rectangle.Style>
                                            <Style>
                                                <Style.Triggers>
                                                    <MultiDataTrigger>
                                                        <MultiDataTrigger.Conditions>
                                                            <Condition Binding="{Binding IsMouseOver, ElementName=TreesArrayContainer}" Value="True"/>
                                                            <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}}" Value="False"/>
                                                        </MultiDataTrigger.Conditions>
                                                        <MultiDataTrigger.EnterActions>
                                                            <BeginStoryboard Storyboard="{StaticResource Highlighted}"/>
                                                        </MultiDataTrigger.EnterActions>
                                                        <MultiDataTrigger.ExitActions>
                                                            <BeginStoryboard Storyboard="{StaticResource Normal}"/>
                                                        </MultiDataTrigger.ExitActions>
                                                    </MultiDataTrigger>
                                                    <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}}" Value="True">
                                                        <DataTrigger.EnterActions>
                                                            <BeginStoryboard Storyboard="{StaticResource Selected}"/>
                                                        </DataTrigger.EnterActions>
                                                        <DataTrigger.ExitActions>
                                                            <BeginStoryboard Storyboard="{StaticResource Normal}"/>
                                                        </DataTrigger.ExitActions>
                                                    </DataTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </Rectangle.Style>
                                    </Rectangle>
                                    <Grid Margin="5">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="150"></ColumnDefinition>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition Height="Auto"/>
                                        </Grid.RowDefinitions>
                                        <TextBlock Text="Идентификатор: " TextAlignment="Right" Grid.Column="0" Grid.Row="0"/>
                                        <TextBlock Text="{Binding Identifier}"  Grid.Column="1" Grid.Row="0"/>
                                        <TextBlock Text="Борд: " TextAlignment="Right" Grid.Column="0" Grid.Row="1"/>
                                        <TextBlock Text="{Binding Board}" Grid.Column="1" Grid.Row="1"/>
                                        <TextBlock Text="Расположение *.cfr-файла: " TextAlignment="Right" Grid.Column="0" Grid.Row="2"/>
                                        <TextBlock Text="{Binding FullPath}" TextWrapping="NoWrap" Margin="1,1,1,0" ToolTip="{Binding FullPath}" TextTrimming="CharacterEllipsis" Grid.Column="1" Grid.Row="2"/>
                                    </Grid>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderBrush" Value="{StaticResource WindowBorder}"/>
        <Setter Property="BorderThickness" Value="0"/>
    </Style>
1
15 / 15 / 0
Регистрация: 30.06.2020
Сообщений: 68
07.10.2022, 20:13 9
myTextBlock.TextWrapping = TextWrapping.Wrap;
0
07.10.2022, 20:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2022, 20:13
Помогаю со студенческими работами здесь

FlowLayoutPanel - авторазмер
Добрый день, уважаемый коллеги. Прошу помочь. Есть UserControl, в котором закреплен...

Авторазмер программы
Товарищи, здравствуйте! Подскажите пожалуйста. Перевел программу, добавил элементы, чтобы элементы...

Авторазмер Label по высоте
Нужно что-то вроде AutoSize, но чтобы ширину задавал я, а высота уже подстраивалась сама. Как это...

TextView авторазмер текста
android studio Textview имеет размеры 100% на 50%, заполняя половину экрана. В нем написано...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru