2016-06-28 53 views
0

私は初めてWPFのGridSplitterを使って作業しています。私は、ユーザーが2つのメインコントロールを含むグリッドのサイズを変更できるようにしようとしています。上にはデータグリッドがあり、その上にマップイメージがあるボタンがあります。 Thisこれはデザイナーのようです。私はgridsplitterのためだけに別の行を持っています。行定義のxamlはGridsplitter望ましくない動作

<Grid.RowDefinitions> 
     <RowDefinition Height="37" /> 
     <RowDefinition Height="274*" /> 
     <RowDefinition Height="13*"/> 
     <RowDefinition Height="272*"/> 
     <RowDefinition Height="4*"/> 
</Grid.RowDefinitions> 

です。興味深いことに、GridSplitterは、移動すると機能するようです。それから私はそれを必要に応じて移動させ、正しく機能させることができます。しかし、上に定義した行の行がどこにあるのか分かりませんが、上に定義した行の行がどこにあるのか分かりません。私はそれをさらに上に移動し続けることができます。

私はhereについて話している動作を示すgifへのリンクを添付しました。

GridSplitterを上下に動かすときに、GridSplitterの機能を同じにする方法は不思議です。今のところ、機能は最初の開始位置から下に移動した場合にのみ正しい機能です。

何か助けていただければ幸いです。

アップデート:ここでは、グリッドを保持しているユーザーコントロールの完全なXAMLです:

<UserControl x:Class="LWDCM.Views.JobsControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:local="clr-namespace:LWDCM.Views" 
     xmlns:Properties="clr-namespace:LWDCM.Properties" 
     xmlns:Utility="clr-namespace:LWDCM.Utility" 
     xmlns:Styles="clr-namespace:LWDCM.Styles" 
     xmlns:gif="https://github.com/XamlAnimatedGif/XamlAnimatedGif" 
     xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 
     xmlns:Converters="clr-namespace:LWDCM.Converters" 
     mc:Ignorable="d" 
     Name="jobsControl" 
     MinWidth="800" 
     MinHeight="600" 
     > 


<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="../Styles/AppStyles.xaml" /> 
      <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
      <!-- Accent and AppTheme setting --> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

<Grid x:Name="MainGrid" 
     Margin="0,0,0,0" 
     Background="#26598c" 
     > 

    <!--<Grid.Background> 
     <LinearGradientBrush ColorInterpolationMode="SRgbLinearInterpolation" 
          StartPoint="0.5, 0.0" 
          EndPoint="0.5, 1.0"> 
      <GradientStopCollection> 
       <GradientStop Color="#FF111111" 
           Offset="0.0" /> 
       <GradientStop Color="#FF333333" 
           Offset="0.5" /> 
       <GradientStop Color="#FF111111" 
           Offset="1.0" /> 
      </GradientStopCollection> 
     </LinearGradientBrush> 
    </Grid.Background>--> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="37" /> 
     <RowDefinition Height="274*" /> 
     <RowDefinition Height="13*"/> 
     <RowDefinition Height="272*"/> 
     <RowDefinition Height="4*"/> 
    </Grid.RowDefinitions> 

    <Grid.Resources> 
     <ContextMenu x:Key="ListViewContextMenu"> 
      <MenuItem x:Name="ContextRename" 
         Header="{x:Static Properties:Resources.RenameJob}" 
         Command="{Binding RenameJobCommand}" /> 
      <MenuItem x:Name="ContextSetJobsiteAddress" 
         Header="{x:Static Properties:Resources.SetJobsiteAddress}" 
         Command="{Binding UpdateJobSiteAddressCommand}" /> 
      <MenuItem x:Name="ContextSetCustomerAddress" 
         Header="{x:Static Properties:Resources.SetCustomerAddress}" 
         Command="{Binding UpdateCustomerInformationCommand}" /> 
      <MenuItem x:Name="ContextSetContractorAddress" 
         Header="{x:Static Properties:Resources.SetContractorAddress}" 
         Command="{Binding UpdateContractorInformationCommand}" /> 
      <MenuItem x:Name="ContextEditWorkOrderNumber" 
         Header="{x:Static Properties:Resources.EditWorkOrderNumber}" 
         Command="{Binding EditWorkOrderNumberCommand}" /> 
      <Separator/> 
      <MenuItem x:Name="ExportToKML" 
         Header="{x:Static Properties:Resources.ExportToKML}" 
         Command="{Binding ExportToKMLCommand}"/> 
     </ContextMenu> 
     <Converters:NullVisibilityConverter x:Key="NullVisibilityConverter" /> 
    </Grid.Resources> 

    <DataGrid x:Name="JobListView" 
       AutoGenerateColumns="False" 
       ItemsSource="{Binding UnitStatusCollection, Mode=TwoWay}" 
       CanUserDeleteRows="False" 
       Style="{StaticResource JobGridViewStyle}" 
       SelectedItem="{Binding JobsListViewSelectedUnitInfo, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
       Utility:DataGridColumnsBehavior.BindableColumns="{Binding DataGridColumns}" 
       ContextMenu="{StaticResource ListViewContextMenu}" 
       Margin="10,0,10,2" 
       Grid.Row="1" 
       SelectionMode="Single" 
       SelectionUnit="FullRow" 
       HorizontalAlignment="Stretch" 
       HorizontalContentAlignment="Stretch" 
       RowStyle="{StaticResource DataGridRowStyle}" 
       CellStyle="{StaticResource DataGridCellStyle}" 
       AlternationCount="2" 
       CanUserResizeRows="False" 
       HorizontalGridLinesBrush="#d6d6d6" 
       VerticalGridLinesBrush="#d6d6d6" 
       Background="#EAEAEA" 
       > 

     <!--This is to allow double clicks to open a job in LWD 3x--> 
     <DataGrid.InputBindings> 
      <MouseBinding Gesture="LeftDoubleClick" 
          Command="{Binding OpenInLWD3xCommand}" /> 
      <KeyBinding Key="Return" 
         Command="{Binding OpenInLWD3xCommand}" /> 
      <KeyBinding Key="F5" 
          Command="{Binding RefreshCommand}"/> 
     </DataGrid.InputBindings> 

     <DataGrid.Resources> 
      <Converters:DoubleNanVisibilityConverter x:Key="DoubleNanVisibilityConverter" /> 
      <Converters:NullVisibilityConverter x:Key="NullVisibilityConverter" /> 

     </DataGrid.Resources> 

    </DataGrid> 


    <Button Cursor="Hand" 
      Grid.ZIndex="0" 
      Margin="10,2,10,1" 
      Grid.Row="3" 
      x:Name="cmdMapImage" 
      Visibility="{Binding JobsListViewSelectedUnitInfo, Converter={StaticResource NullVisibilityConverter}}" 
      Style="{StaticResource MapButtonStyle}" 
      Command="{Binding ShowMapOnlineCommand}"> 
     <Image x:Name="mapImage" 
       Source="{Binding DisplayedImage}" 
       Tag="{Binding JobId}" 
       Stretch="Fill" 
       VerticalAlignment="Center" 
       RenderOptions.BitmapScalingMode="HighQuality"> 
     </Image> 
    </Button> 

    <Rectangle Fill="#26598c" 
       Grid.ZIndex="1" 
       Margin="0,10,7,0" 
       Grid.Row="3" 
       Height="46" 
       VerticalAlignment="Top" 
       HorizontalAlignment="Right" 
       Width="226" 
       RadiusY="3.667" 
       RadiusX="3.667" 
       Focusable="False"/> 

    <Button Grid.ZIndex="2" 
      Command="{Binding ScanForwardCommand}" 
      x:Name="scrollRightButton" 
      Margin="0,20,15,0" 
      HorizontalAlignment="Right" 
      Width="30" 
      Height="26" 
      VerticalAlignment="Top" 
      Grid.Row="3"> 

     <Image x:Name="scrollRight" 
       Source="/Assets/Down-30px-tall.png" 
       Stretch="Fill" 
       VerticalAlignment="Center" 
       RenderOptions.BitmapScalingMode="HighQuality"> 

     </Image> 
    </Button> 

    <Button Grid.ZIndex="2" 
      Command="{Binding ScanBackwardCommand}" 
      x:Name="scrollLeftButton" 
      Margin="0,20,50,0" 
      RenderTransformOrigin="1,-0.617" 
      HorizontalAlignment="Right" 
      Width="30" 
      Height="26" 
      VerticalAlignment="Top" 
      Grid.Row="3"> 

     <Image x:Name="scrollLeft" 
       Source="/Assets/Up-30px-tall.png" 
       Stretch="Fill" 
       VerticalAlignment="Center" 
       RenderOptions.BitmapScalingMode="HighQuality"> 

     </Image> 
    </Button> 

    <ComboBox x:Name="ScanSizesComboBox" 
       Grid.ZIndex="2" 
       ItemsSource="{Binding ScanSizes}" 
       SelectedItem="{Binding SelectedScanSize, Mode=TwoWay}" 
       ToolTip="{Binding (Validation.Errors)[0].ErrorContent}" 
       Margin="0,20,85,0" 
       HorizontalAlignment="Right" 
       Width="61" 
       Height="26" 
       VerticalAlignment="Top" 
       Grid.Row="3" /> 

    <Button x:Name="OpenLWD" 
      Grid.ZIndex="2" 
      Command="{Binding OpenInLWD3xCommand}" 
      Margin="0,20,150,0" 
      HorizontalAlignment="Right" 
      Width="75" 
      Height="26" 
      VerticalAlignment="Top" 
      Grid.Row="3" 
      Padding="0" 
      Background="#26598c"> 


     <Image x:Name="openIn3x" 
       Source="/Assets/LWD-button.png" 
       Tag="{Binding JobId}" 
       Stretch="Fill" 
       VerticalAlignment="Center" 
       RenderOptions.BitmapScalingMode="HighQuality" 
       Height="27"> 
     </Image> 

    </Button> 

    <DockPanel Grid.Row="0" 
       LastChildFill="False" 
       Grid.RowSpan="4"> 
     <Menu x:Name="menu" 
       DockPanel.Dock="Top" 
       IsTabStop="False" 
       FontSize="13" 
       VerticalAlignment="Top" 
       Background="WhiteSmoke" 
       Height="27"> 

      <MenuItem x:Name="FileMenu" 
         Header="{x:Static Properties:Resources.File}" 
         Background="Transparent" FontFamily="Arial"> 
       <MenuItem x:Name="BluetoothUpload" 
          Header="{x:Static Properties:Resources.UploadBluetoothJob}" 
          IsEnabled="True" 
          Command="{Binding OpenLWD3xBluetoothCommand}" /> 
       <MenuItem x:Name="FileUpload" 
          Header="{x:Static Properties:Resources.UploadLocalFile}" 
          IsEnabled="True" 
          Command="{Binding AddLocalJobCommand}" /> 
       <Separator /> 
       <MenuItem x:Name="FileLogout" 
          Header="{x:Static Properties:Resources.Logout}" 
          IsEnabled="True" 
          Command="{Binding LogoutCommand}" 
          CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" /> 
      </MenuItem> 

      <MenuItem x:Name="ViewMenu" 
         Header="{x:Static Properties:Resources.View}" 
         Background="Transparent"> 
       <MenuItem x:Name="ColumnOptions" 
          Header="{x:Static Properties:Resources.ColumnOptions}" 
          Background="Transparent" 
          Command="{Binding ShowColumnOptionsDialogCommand}" /> 

       <MenuItem x:Name="DisplayUnits" 
          Header="{x:Static Properties:Resources.DisplayUnits}" 
          Background="Transparent" 
          Command="{Binding ShowUnitsSelectionCommand}" /> 

       <Separator /> 
       <MenuItem x:Name="ViewRefresh" 
          IsEnabled="True" 
          Header="Re_fresh" 
          Command="{Binding RefreshCommand}" 
          /> 
       <!--<MenuItem x:Name="ViewOptions" Header="_Options" />--> 
      </MenuItem> 
      <MenuItem x:Name="HelpMenu" 
         Header="{x:Static Properties:Resources.Help}" 
         Background="Transparent"> 
       <MenuItem x:Name="HelpOpen" 
          Header="{x:Static Properties:Resources.OnlineHelp}" /> 
       <Separator /> 
       <MenuItem x:Name="HelpAbout" 
          Header="{x:Static Properties:Resources.About}" 
          Command="{Binding ShowAboutDialogCommand}" /> 

       <MenuItem x:Name="DeleteUnits" 
          Header="Delete all Units" 
          Command="{Binding RemoveUnitsCommand}"/> 
      </MenuItem> 
     </Menu> 
    </DockPanel> 

    <GridSplitter x:Name="gridSplitter" Grid.Row="2" Width="Auto" MinHeight="5" MaxHeight="5" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,4,0,4" /> 
</Grid> 


</UserControl> 

そして、ここではJobGridViewStyleです:

<Style x:Key="JobGridViewStyle" TargetType="DataGrid"> 
    <Setter Property="HorizontalAlignment" Value="Stretch" /> 
    <Setter Property="HorizontalContentAlignment" Value="Left" /> 
    <Setter Property="Background" Value="WhiteSmoke" /> 
    <Setter Property="SelectionMode" Value="Single" /> 
    <Setter Property="BorderThickness" Value="0" /> 
    <Setter Property="Margin" Value="10,0,10,0" /> 
</Style> 
+0

どのような制御がスプリッタの下にあり、どのパネルを保存していますか?この見解の完全なxamlを見ることができますか? – Karolis

+0

コントロールを含むグリッドのxamlでポストを更新しました – KSF

+0

このグリッドはUserControlまたはWindowに保存されていますか?貼り付けたコードを試したので正しく動作します。 – Karolis

答えて

0

私は助けに感謝します。私は本当に理由はわからないんだけど、私の答えを解決するには、私のGridSplitterに

ShowsPreview="True" 

を追加しました。なぜこれが機能に影響するか分かりませんが、私の問題は解決しました。

参考までに、このページを参照していた:How to: Resize Rows with a GridSplitter解決策を見つけたとき。

ありがとうございました

関連する問題