powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid не появляется горизонтальный скролбар
20 сообщений из 20, страница 1 из 1
DataGrid не появляется горизонтальный скролбар
    #38913821
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сделать разметку, чтобы он появлялся?
Код: 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.
<GroupBox Header="Aspects Data" Margin="5,5,5,5">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition  />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <ScrollViewer VerticalScrollBarVisibility="Auto" 
                                        HorizontalScrollBarVisibility="Auto"  Margin="5,5,5,5">
                        <DataGrid x:Name="dg1" ItemsSource="{Binding Path=Aspects}" SelectedItem="{Binding SelectedAspect}" CanUserAddRows="False"  
                                            CanUserDeleteRows="False" SelectionMode="Single" SelectedIndex="{Binding SelectedAspectIndex}" VerticalAlignment="Top" 
                                            AutoGenerateColumns="False" Margin="5,5,5,5">
                            <DataGrid.RowHeaderTemplate>
                                <DataTemplate>
                                    <TextBlock Width="80"  Text="{Binding DataContext.Name, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
                                </DataTemplate>
                            </DataGrid.RowHeaderTemplate>
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="" IsReadOnly="True"  Binding="{Binding Path=Angle, StringFormat=\{0\}°}"></DataGridTextColumn>
                                <DataGridTextColumn Header="Sun" Binding="{Binding Path=Pl0, StringFormat=N}"></DataGridTextColumn>
                                ....................................
                            </DataGrid.Columns>
                        </DataGrid>
                    </ScrollViewer>
                    <StackPanel Grid.Row="1" Orientation="Horizontal">
                        <Button Content="Add Orb" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200" Click="AddButton_Click"/>
                        <Button Content="Delete Orb" Command="{Binding DeleteCommand}" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200"/>
                        <Button Content="Update Orb" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200" Click="UpdateButton_Click"/>
                    </StackPanel>
                </Grid>
            </GroupBox>
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38913828
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavluha,

<ScrollViewer VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto" Margin="5,5,5,5"> - вот это убрать

HorizontalScrollBarVisibility - установить у DataGrid. И не использовать колонки с шириной "*"
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38913831
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch,

Не работает...
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38913836
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavluha,

Строки есть в гриде? или он пустой?
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38913838
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Явно ширину всех колонок задавать пробовали?
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38913851
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch,

Да, в коде:
Код: c#
1.
2.
3.
4.
5.
foreach (var column in gv.Columns)
            {
                column.MinWidth = width;
                column.Width = new DataGridLength(width, DataGridLengthUnitType.Star);
            }
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38913867
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavluha,

ЯИ не использовать колонки с шириной "*"

column.Width = new DataGridLength(width, DataGridLengthUnitType. Star );
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38914008
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchPavluha,

<ScrollViewer VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto" Margin="5,5,5,5"> - вот это убрать

HorizontalScrollBarVisibility - установить у DataGrid. И не использовать колонки с шириной "*"
надо не HorizontalScrollBarVisibility , а ScrollViewer.HorizontalScrollBarVisibility установить, это прикрепляемое наследуемое свойство, на сколько я помню.
Проблема автора в том, что он создает DataGrid внутри ScrollViewer'а, а внутри ScrollViewer ширина и высота в процедуре Measure равны PositiveInfinity. Соотвественно у DataGrid ширина не ограничена и ScrollBar не появляется.
Надо добавить, что внутри самого DataGrid Уже есть ScrollViewer и делать его снаружи нет необходимости.
Нужно удалить ScrollViewer (наружный), чтоб достичь требуемого результата.
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38914050
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38914118
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchRoman Mejtes,

https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.horizontalscrollbarvisibility(v=vs.110).aspx
да, это равнозначно

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        public ScrollBarVisibility HorizontalScrollBarVisibility 
        {
            get { return (ScrollBarVisibility)GetValue(HorizontalScrollBarVisibilityProperty); } 
            set { SetValue(HorizontalScrollBarVisibilityProperty, value); }
        }

        /// <summary> 
        ///     The DependencyProperty for the HorizontalScrollBarVisibility property.
        /// </summary> 
        public static readonly DependencyProperty HorizontalScrollBarVisibilityProperty = ScrollViewer.HorizontalScrollBarVisibilityProperty.AddOwner(typeof(DataGrid), new FrameworkPropertyMetadata(ScrollBarVisibility.Auto)); 
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38914436
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,


Удалил и сделал, как написали. Получилось так:
Код: 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.
<GroupBox Header="Aspects Data" Margin="5,5,5,5">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition  />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <DataGrid x:Name="dg1" ItemsSource="{Binding Path=Aspects}" SelectedItem="{Binding SelectedAspect}" CanUserAddRows="False"  
                                        CanUserDeleteRows="False" SelectionMode="Single" SelectedIndex="{Binding SelectedAspectIndex}" VerticalAlignment="Top" 
                                        AutoGenerateColumns="False" Margin="5,5,5,5" ScrollViewer.HorizontalScrollBarVisibility="Auto">
                        <DataGrid.RowHeaderTemplate>
                            <DataTemplate>
                                <TextBlock Width="80"  Text="{Binding DataContext.Name, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
                            </DataTemplate>
                        </DataGrid.RowHeaderTemplate>
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="" IsReadOnly="True"  Binding="{Binding Path=Angle, StringFormat=\{0\}°}"></DataGridTextColumn>
                            <DataGridTextColumn Header="Sun" Binding="{Binding Path=Pl0, StringFormat=N}"></DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                    <StackPanel Grid.Row="1" Orientation="Horizontal">
                        <Button Content="Add Orb" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200" Click="AddButton_Click"/>
                        <Button Content="Delete Orb" Command="{Binding DeleteCommand}" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200"/>
                        <Button Content="Update Orb" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200" Click="UpdateButton_Click"/>
                    </StackPanel>
                </Grid>
            </GroupBox>



В коде поменял на такое:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 public void SetMinWidths(DataGrid gv, double width)
        {
            foreach (var column in gv.Columns)
            {
                column.MinWidth = width;
                column.Width = new DataGridLength(width, DataGridLengthUnitType.Auto);
            }
        }



Но все равно не работает.
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38914572
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavluha,

попробуй ограничить размер DataGrid по ширине и посмотри, что получится.
через MaxWidth или через Width
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38914805
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Если ширину указывать, то работает.
А без этого как-то можно, мне необходимо чтобы GroupBox занял оставшуюся часть окна?
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38914829
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavluha,

Верстку всего окна можно?
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38915053
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch,

Код: 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.
<Window x:Class="Astro.Pages"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Settings" HorizontalAlignment="Center" VerticalAlignment="Center" Closing="Window_Closing">
    <Grid Margin="0,0,0,-1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="600">
        <Grid.RowDefinitions>
            <RowDefinition Height="0.939*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal">
            <ListBox ItemsSource="{Binding Path=Pages}" SelectedItem="{Binding SelectedPage}" SelectedIndex="{Binding SelectedIndex}" 
                     HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="150" Margin="5,5,5,5">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Width="80"  Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
                    </DataTemplate>
                </ListBox.ItemTemplate>
                <ListBox.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="Добавить" Click="AddMenuItem_Click"></MenuItem>
                        <MenuItem Header="Удалить" Command="{Binding Path=DeletePageCommand}" CommandParameter="{Binding Path=SelectedItem}"></MenuItem>
                        <MenuItem Header="Редактировать" Click="EditMenuItem_Click" ></MenuItem>
                    </ContextMenu>
                </ListBox.ContextMenu>
            </ListBox>
            <GroupBox Header="Aspects Data" Margin="5,5,5,5">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition  />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <DataGrid x:Name="dg1" ItemsSource="{Binding Path=Aspects}" SelectedItem="{Binding SelectedAspect}" CanUserAddRows="False"  
                                        CanUserDeleteRows="False" SelectionMode="Single" SelectedIndex="{Binding SelectedAspectIndex}" 
                                        VerticalAlignment="Top" AutoGenerateColumns="False" Margin="5,5,5,5"
                                        ScrollViewer.HorizontalScrollBarVisibility="Auto" >
                        <DataGrid.RowHeaderTemplate>
                            <DataTemplate>
                                <TextBlock Width="80"  Text="{Binding DataContext.Name, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
                            </DataTemplate>
                        </DataGrid.RowHeaderTemplate>
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="" IsReadOnly="True"  Binding="{Binding Path=Angle, StringFormat=\{0\}°}"></DataGridTextColumn>
                            <DataGridTextColumn Header="Sun" Binding="{Binding Path=Pl0, StringFormat=N}"></DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                    <StackPanel Grid.Row="1" Orientation="Horizontal">
                        <Button Content="Add Orb" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200" Click="AddButton_Click"/>
                        <Button Content="Delete Orb" Command="{Binding DeleteCommand}" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200"/>
                        <Button Content="Update Orb" Margin="5" Focusable="False" HorizontalAlignment="Left" MinWidth="200" Click="UpdateButton_Click"/>
                    </StackPanel>
                </Grid>
            </GroupBox>
        </StackPanel>
    </Grid>
</Window>
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38915092
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavluha,

авторА без этого как-то можно, мне необходимо чтобы GroupBox занял оставшуюся часть окна?

Безотносительно DataGrid, чтобы GroupBox был на оставшуюся часть окна - StackPanel нужно менять на колонки в Grid например.
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38915104
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchPavluha,

авторА без этого как-то можно, мне необходимо чтобы GroupBox занял оставшуюся часть окна?

Безотносительно DataGrid, чтобы GroupBox был на оставшуюся часть окна - StackPanel нужно менять на колонки в Grid например.

Даже уточню - именно в этом и проблема. StackPanel не ограничивает свой размер по родительскому контейнеру
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38915111
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как то так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        
    <ListBox Grid.Column=0 ... </ListBox>
    <GroupBox Grid.Column=1... </GroupBox>
        
    </Grid>
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38915147
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch,

Спасибо, таким способом все работает!
...
Рейтинг: 0 / 0
DataGrid не появляется горизонтальный скролбар
    #38915196
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема была в том, что ты разместил DataGrid внутри StackPanel с ориентацией по горизонтале.
В таком варианте ширина содержимого панели ровна PositiveInfinity, а высота ограничена размером родительских контролов.
Так как ширина бесконечная, DataGrid по ширине не растягивался, а сжимался (авторазмер).
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid не появляется горизонтальный скролбар
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]