у меня есть окно с 2-мя вкладками каждая вкладка содержит ScrollViewer с точно такой же свойствамиWPF ScrollViewer Исходное положение странное
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CanContentScroll="False">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
</Grid>
</ScrollViewer>
разница в настоящее время:
Первая вкладка:
сетки строка 0 содержит <WrapPanel>
с парой <StackPanel>
внутри, где все элементы управления
строка сетки 1 содержит <DataGrid>
, которые заполняют остальное и имеет минимальную высоту
Вторая вкладка:
сетки строка 0 содержат WrapPanel
с парой <DockPanel>
внутри, где все элементы управления
сетки строка 1 содержит <DataGrid>
, заполняющие отдых и имеет минимальную высоту
вопрос:
когда я открываю окно есть слишком много контроля, чтобы просмотреть все сразу так полосы прокрутки O Появляются <ScrollViewer>
, и это прекрасно. НО по какой-то неудобной причине вторая вкладка полосы прокрутки НЕ наверху, а чуть больше 3/4 в окне. Интересно, может ли кто-нибудь еще что-то выдавать и может знать, что я там забыл?
, что я пробовал:
назвал
<ScrollViewer>
в вопросе и вызвать по форме нагрузкиMyScroll.ScrollToTop();
не работает, но я думаю, это потому, что управление еще не существует.Я попытался добавить событие
GotFocus
к<TabItem>
, но этот ребенок запускается каждый раз, когда я также нажимаю на него элемент управления. Я на самом деле обнаружил, что смешно, когда я сначала нажимаю<ComboBox>
в конце окна.
Перепробовав все, что я обнаружил, что, начиная с верхней части, когда <ScrollViewer>
в кулак рассматривается то, что я хочу, и интересно, если есть способ сделать это, или если я что-то отсутствует.
Во-вторых, я действительно хотел бы, чтобы <ScrollViewer>
прокрутил страницу назад, когда человек переместился на <TabItem>
. Моя маленькая ошибка. Я понял, что на самом деле мне это нравится.
Пользователь будет редко использовать более 2 Вкладки на этом окне так безумно perfomant решение не требуется
Edit: Я нашел кое-что. если я прокручу резервную копию моей проблемной вкладки, а затем запустил другую вкладку и вернусь, свиток вернется ТОЧНО, где он прослушивается.
Обратите внимание, что у меня нет событий в любом месте, просто связанных с привязкой для выбранного значения combobox и текстового поля. o да и источник данных для сетки, но пустой для обеих вкладок в это время.
У меня есть 4 окна с ТОЧНЫМ таким же форматированием, и только 1 вкладка из 12 делает это.
Edit # 2: здесь полный XAML
<syncfusion:ChromelessWindow x:Class="prjSelection.Crating.frmCratingWestManufacturers"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:prjSelection.Crating"
Title="West Crating" Height="640" Width="1024"
UseNativeChrome="True"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
syncfusion:SkinStorage.VisualStyle="Metro" ShowActivated="True" WindowStartupLocation="CenterScreen">
<Grid>
<Grid Name="grdOverlay" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Transparent" Panel.ZIndex="99999999" Visibility="Hidden" MinWidth="150" MinHeight="200">
<Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="White" Opacity="0.8"></Rectangle>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Label HorizontalAlignment="Stretch" VerticalAlignment="Center" Content="Running Selection" FontSize="18" FontWeight="Bold"></Label>
<syncfusion:SfBusyIndicator AnimationType="Gear" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ViewboxHeight="150" ViewboxWidth="150" VerticalContentAlignment="Center" />
</StackPanel>
</Grid>
<syncfusion:TabControlExt BorderThickness="0,2,0,0" Name="tab1" AllowDrop="False" Background="White" EnableLabelEdit="False" AllowDragDrop="False" CloseButtonType="Hide" DefaultContextMenuItemVisibility="Hidden" SelectOnCreatingNewItem="False" ShowTabItemContextMenu="False" ShowTabListContextMenu="False" SnapsToDevicePixels="True" TabPanelBackground="White" UseLayoutRounding="False" TabScrollButtonVisibility="Auto" TabVisualStyle="None" TabStripPlacement="Top" TabItemSelectedForeground="White" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Stretch">
<syncfusion:TabItemExt Header="File" Width="150" IconMargin="0" >
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CanContentScroll="False">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<WrapPanel Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Top">
<StackPanel>
<GroupBox Header="File Visual Properties" VerticalContentAlignment="Stretch" VerticalAlignment="Top" Name="grpFileVisualProperties">
<WrapPanel Orientation="Horizontal">
<DockPanel Height="25" LastChildFill="True" Width="220" Margin="2,2,0,0">
<Label Content="File Color" Height="25" Name="lblFileColor" />
<ComboBox DisplayMemberPath="Value" Height="25" ItemsSource="{Binding Path=File.Color}" Name="cboFileColor" SelectedItem="{Binding Path=File.SelectedColor, Mode=TwoWay}" Width="120" DockPanel.Dock="Right" />
<Label />
</DockPanel>
</WrapPanel>
</GroupBox>
<GroupBox Header="File Relative Properties" VerticalContentAlignment="Stretch" VerticalAlignment="Top" Name="grpFileRelativeProperties">
<WrapPanel Orientation="Horizontal">
<DockPanel Height="25" LastChildFill="True" Width="280" Margin="2,2,0,0">
<Label Content="File Type" Height="25" Name="lblFileType" />
<ComboBox DisplayMemberPath="Value" Height="25" ItemsSource="{Binding Path=File.FileType}" Name="cboFileType" SelectedItem="{Binding Path=File.SelectedFileType, Mode=TwoWay}" Width="120" DockPanel.Dock="Right" />
<Label />
</DockPanel>
</WrapPanel>
</GroupBox>
</StackPanel>
</WrapPanel>
<Grid Grid.Row="1" HorizontalAlignment="Stretch" Name="grid2" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Content="Run Selection" FontSize="20" FontStretch="Normal" Height="46" Name="cmdFileSelection" Padding="0" Width="198.162" Canvas.Left="793.838" Canvas.Top="410" VerticalAlignment="Top" Grid.Column="2" />
<syncfusion:SfDataGrid AllowGrouping="False" AllowResizingColumns="False" AllowSorting="False" ColumnSizer="Auto" FontSize="13" GroupRowSelectionBrush="{x:Null}" ItemsSource="{Binding Path=File.ResultGrid}" Name="grdFileData" NavigationMode="Cell" ShowColumnWhenGrouped="False" VerticalContentAlignment="Stretch" Canvas.Left="898.447" Canvas.Top="462" HorizontalAlignment="Left" Grid.Column="0" MinHeight="120" MinWidth="120" />
</Grid>
</Grid>
</ScrollViewer>
</syncfusion:TabItemExt>
<syncfusion:TabItemExt Header="Box" Width="150" IconMargin="0">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CanContentScroll="False">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<WrapPanel Grid.Row="0" HorizontalAlignment="Stretch" Orientation="Horizontal">
<DockPanel Height="25" Width="375" Margin="2,2,0,0">
<Label Content="Height" Name="lblHeight" Height="25" />
<ComboBox ItemsSource="{Binding Path=Box.Height}" SelectedItem="{Binding Path=Box.SelectedHeight, Mode=TwoWay}" DisplayMemberPath="Value" Name="cboHeight" Width="200" Height="25" DockPanel.Dock="Right" />
<Label />
</DockPanel>
</WrapPanel>
<Grid Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Content="Run Selection" FontSize="20" FontStretch="Normal" Height="46" Name="cmdBoxSelection" Padding="0" Width="198.162" Canvas.Left="793.838" Canvas.Top="410" VerticalAlignment="Top" Grid.Column="2" />
<syncfusion:SfDataGrid AllowGrouping="False" AllowResizingColumns="False" AllowSorting="False" ColumnSizer="Auto" FontSize="13" GroupRowSelectionBrush="{x:Null}" ItemsSource="{Binding Path=Box.ResultGrid}" Name="grdBoxData" NavigationMode="Cell" ShowColumnWhenGrouped="False" VerticalContentAlignment="Stretch" Canvas.Left="898.447" Canvas.Top="462" HorizontalAlignment="Left" Grid.Column="0" MinHeight="120" MinWidth="120" />
</Grid>
</Grid>
</ScrollViewer>
</syncfusion:TabItemExt>
</syncfusion:TabControlExt>
</Grid>
Помещение 'RowDefinition Height =" * "' внутри бесконечного контейнера (например, 'ScrollViewer') не имеет смысла и приведет к неожиданным/неустойчивое поведение. Удалите это. –
Я просто попробовал ' ' и ' ' и все еще не работает. просто заставило окно выглядеть хуже. С * если панель обертывания содержала только 2 элемента управления, первая строка имела очень небольшую высоту, так как она автоматически приспосабливалась, а вторая строка занимала все остальное. поэтому у меня было больше места для просмотра данных сетки –
Franck
, какие данные сетки? пожалуйста, разместите свой полный XAML и снимок экрана о том, что у вас есть по сравнению с тем, что вам нужно. –