Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid не появляется горизонтальный скролбар / 20 сообщений из 20, страница 1 из 1
23.03.2015, 17:14
    #38913821
Pavluha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
Как сделать разметку, чтобы он появлялся?
Код: 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
23.03.2015, 17:19
    #38913828
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
Pavluha,

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

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

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

Строки есть в гриде? или он пустой?
...
Рейтинг: 0 / 0
23.03.2015, 17:27
    #38913838
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
Явно ширину всех колонок задавать пробовали?
...
Рейтинг: 0 / 0
23.03.2015, 17:32
    #38913851
Pavluha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
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
23.03.2015, 17:43
    #38913867
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
Pavluha,

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

column.Width = new DataGridLength(width, DataGridLengthUnitType. Star );
...
Рейтинг: 0 / 0
23.03.2015, 19:21
    #38914008
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
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
23.03.2015, 19:57
    #38914050
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
...
Рейтинг: 0 / 0
23.03.2015, 20:53
    #38914118
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
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
24.03.2015, 09:53
    #38914436
Pavluha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
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
24.03.2015, 11:09
    #38914572
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
Pavluha,

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

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

Верстку всего окна можно?
...
Рейтинг: 0 / 0
24.03.2015, 14:54
    #38915053
Pavluha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
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
24.03.2015, 15:15
    #38915092
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
Pavluha,

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

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

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

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

Даже уточню - именно в этом и проблема. StackPanel не ограничивает свой размер по родительскому контейнеру
...
Рейтинг: 0 / 0
24.03.2015, 15:27
    #38915111
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
Как то так:
Код: 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
24.03.2015, 15:44
    #38915147
Pavluha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid не появляется горизонтальный скролбар
Lelouch,

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


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