2013-09-12 7 views
0

у меня есть окно с 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> 

enter image description here

+0

Помещение 'RowDefinition Height =" * "' внутри бесконечного контейнера (например, 'ScrollViewer') не имеет смысла и приведет к неожиданным/неустойчивое поведение. Удалите это. –

+0

Я просто попробовал '' и '' и все еще не работает. просто заставило окно выглядеть хуже. С * если панель обертывания содержала только 2 элемента управления, первая строка имела очень небольшую высоту, так как она автоматически приспосабливалась, а вторая строка занимала все остальное. поэтому у меня было больше места для просмотра данных сетки – Franck

+1

, какие данные сетки? пожалуйста, разместите свой полный XAML и снимок экрана о том, что у вас есть по сравнению с тем, что вам нужно. –

ответ

0

решение было изменить порядок, в котором было написано XAML. WPF фокусирует первый элемент в коде XAML независимо от того, является ли он последним визуально

Смежные вопросы