2016-03-10 3 views
0

У меня нет представления о том, как заставить панель меню, панель инструментов и холст фиксировать свои позиции. При прокрутке они не должны двигаться. У меня есть окно WPF, где у меня есть панель меню, панель инструментов и два холста. Холст 1 находится в XAML, а холст 2 динамичен через vb.net Теперь я хочу исправить первые три.Как исправить холст и панель инструментов при прокрутке

  • Строка меню
  • Панель инструментов
  • Canvas 1

Вот мой XAML:

<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" > 
    <DockPanel> 
     <Grid ScrollViewer.HorizontalScrollBarVisibility="Visible" > 
      <Grid.RowDefinitions> 
       <RowDefinition Height="25" /> 
       <RowDefinition Height="25" /> 
       <RowDefinition Height="*" /> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="350"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Menu x:Name="menu1" BorderBrush="AliceBlue" VerticalAlignment="Top" FontFamily="Comic Sans MS" > 
       <MenuItem Header="_File" Width="92" FontSize="16" FontWeight="Normal" FontFamily="Century Gothic" > 
        <MenuItem Header="Location" FontSize="16"> 
         <MenuItem Header="01" /> 
         <MenuItem Header="02"/> 
         <MenuItem Header="03"/> 
         <MenuItem Header="04"/> 
         <MenuItem Header="05"/> 
         <MenuItem Header="06"/> 
         <MenuItem Header="07"/> 
         <MenuItem Header="08"/> 
         <MenuItem Header="09"/> 
         <MenuItem Header="10"/> 
         <MenuItem Header="11"/> 
         <MenuItem Header="12"/> 
         <MenuItem Header="13"/> 
         <MenuItem Header="14"/> 
        </MenuItem> 
        <MenuItem Header="_Print"/> 
        <MenuItem Header="_Print Preview"/> 
        <MenuItem Header="_Exit"/> 

       </MenuItem> 
      </Menu> 

      <ToolBar Grid.Row="1" x:Name="toolBar1" BorderBrush="Red" BorderThickness="3" Margin="0,0,0,900" Grid.RowSpan="2" Height="30" VerticalAlignment="Top" > 
       <Button x:Name="Zoomin" Click="menuItemZoomin_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" Height="55" RenderTransformOrigin ="0.917,0.587" IsHitTestVisible="True" IsEnabled="True" FontFamily="Century Gothic" Content="Zoom In" /> 
       <Button x:Name="Zoomout" Click="menuItemZoomout_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" RenderTransformOrigin="0.917,0.587" Height="55" FontFamily="Century Gothic" Content="Zoom Out"/> 
       <Button x:Name="Print" Click="PrintBtn_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" RenderTransformOrigin="0.917,0.587" Height="55" FontFamily="Century Gothic" Content="Print"/> 
      </ToolBar> 
      <DockPanel> 
       <Canvas x:Name="cvsZoneColor" DockPanel.Dock="Top" > 
       <Rectangle Width="25" Height="25" Margin="60 60 60 950" > 
        <Rectangle.Fill> 
         <SolidColorBrush> 
         <SolidColorBrush.Color> 
          <Color A="219" R="219" G="249" B="217" /> 
         </SolidColorBrush.Color> 
         </SolidColorBrush> 
        </Rectangle.Fill> 
       </Rectangle> 
       <TextBlock Text="A" Margin="60 80 60 950" Width="20" Height="20" ></TextBlock> 
       <Rectangle Width="25" Height="25" Margin="90 60 70 990" > 
        <Rectangle.Fill> 
         <SolidColorBrush> 
          <SolidColorBrush.Color> 
           <Color A="219" R="255" G="238" B="204" /> 
          </SolidColorBrush.Color> 
         </SolidColorBrush> 
        </Rectangle.Fill> 
       </Rectangle> 
       <TextBlock Text="B" Margin="90 80 70 950" Width="20" Height="20" ></TextBlock> 
       <Rectangle Width="25" Height="25" Margin="120 60 70 990" > 
        <Rectangle.Fill> 
         <SolidColorBrush> 
          <SolidColorBrush.Color> 
           <Color A="219" R="204" G="238" B="255" /> 
          </SolidColorBrush.Color> 
         </SolidColorBrush> 
        </Rectangle.Fill> 
       </Rectangle> 
       <TextBlock Text="C" Margin="120 80 70 950" Width="20" Height="20" ></TextBlock> 
       <Rectangle Width="25" Height="25" Margin="150 60 70 990" > 
        <Rectangle.Fill> 
         <SolidColorBrush> 
          <SolidColorBrush.Color> 
           <Color A="219" R="204" G="238" B="221" /> 
          </SolidColorBrush.Color> 
         </SolidColorBrush> 
        </Rectangle.Fill> 
       </Rectangle> 
       <TextBlock Text="D" Margin="150 80 70 950" Width="20" Height="20" ></TextBlock> 
       <Rectangle Width="25" Height="25" Margin="180 60 70 990" > 
        <Rectangle.Fill> 
         <SolidColorBrush> 
          <SolidColorBrush.Color> 
           <Color A="219" R="255" G="221" B="238" /> 
          </SolidColorBrush.Color> 
         </SolidColorBrush> 
        </Rectangle.Fill> 
       </Rectangle> 
       <TextBlock Text="E" Margin="180 80 70 950" Width="20" Height="20" ></TextBlock> 
       <Rectangle Width="25" Height="25" Margin="210 60 70 990" > 
        <Rectangle.Fill> 
         <SolidColorBrush> 
          <SolidColorBrush.Color> 
           <Color A="219" R="255" G="238" B="255" /> 
          </SolidColorBrush.Color> 
         </SolidColorBrush> 
        </Rectangle.Fill> 
       </Rectangle> 
       <TextBlock Text="F" Margin="210 80 70 950" Width="20" Height="20" ></TextBlock> 
      </Canvas> 
      </DockPanel> 

      <Canvas x:Name="cvsWarehouse" Focusable="True" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible" MouseWheel="Canvas_MouseWheel" Grid.Row="3" RenderTransformOrigin="0.5,0.5" Margin="0,150,0,0" > 
        <Canvas.LayoutTransform> 
         <TransformGroup> 
          <ScaleTransform x:Name ="st1" ScaleX="{Binding Value, ElementName=uiScaleSlider}" 
          ScaleY="{Binding Value, ElementName=uiScaleSlider}" /> 
          <TranslateTransform Y="100" /> 
         </TransformGroup> 

        </Canvas.LayoutTransform> 
       </Canvas> 
      </Grid> 
    </DockPanel> 
</ScrollViewer> 

скроллинг бар на правой стороне не должен двигаться эти три выделено ... Image

+1

Нет кода, сбивает с толку и без реального вопроса. Устраните это быстро, потому что этот вопрос будет закрыт быстро. – Claudius

+0

Claudius, нет кода, который был запрограммирован мной для решения проблемы. Потому что я не знаю WPF. Это причина для постановки вопроса здесь. Я просто хочу исправить элементы к окну, чтобы он не двигался во время прокрутки. –

+0

Можете ли вы опубликовать некоторые из xaml, которые вы пробовали до сих пор, что вызывает проблемы? – matt

ответ

0

Я думаю, что это может привести к тому, что пользовательский интерфейс ближе к тому, как он выглядит, как вы пытаетесь сделать. Если вы запустите XAML, чтобы использовать панель док-станции, вы можете получить более фиксированный интерфейс.

<DockPanel LastChildFill="True"> 
    <Menu x:Name="menu1" DockPanel.Dock="Top"> 
     <MenuItem Header="_File" > 
     ... 
    </Menu> 
    <ToolBar x:Name="toolBar1" DockPanel.Dock="Top"> 
     ... 
    </ToolBar> 
    <Grid x:Name="cvsZoneColor" DockPanel.Dock="Top"> 
     <StackPanel Orientation="Vertical"> 
      <Rectangle Width="25" Height="25" Margin="60 0 60 0" > 
       ... 
      </Rectangle> 
      <TextBlock Text="A" Margin="60 0 60 0" Width="20" Height="20"/> 
     </StackPanel> 
     ... 
    </Grid> 
    <ScrollViewer DockPanel.Dock="Bottom"> 
     <Canvas x:Name="cvsWarehouse"> 
      ... 
     </Canvas> 
    </ScrollViewer> 
</DockPanel> 
+0

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

+0

Попробуйте изменить cvsZoneColor на сетку. Вы также можете попробовать временно разместить границу вокруг cvsWarehouse, чтобы лучше понять, как загружается пользовательский интерфейс, и где может возникнуть проблема. – matt

1

При использовании DockPanel, важно сохранить примечание заказа. Вы должны использовать ниже XAML в качестве отправной точки и не изменить его для ваших нужд:

<Window ...> 
    <DockPanel LastChildFill="True"> 

     <Menu x:Name="menu1" BorderBrush="AliceBlue" VerticalAlignment="Top" FontFamily="Comic Sans MS" DockPanel.Dock="Top"> 
      <MenuItem Header="_File" Width="92" FontSize="16" FontWeight="Normal" FontFamily="Century Gothic" > 
       <MenuItem Header="Location" FontSize="16"> 
        <MenuItem Header="01" /> 
        <MenuItem Header="02"/> 
        <MenuItem Header="03"/> 
        <MenuItem Header="04"/> 
        <MenuItem Header="05"/> 
        <MenuItem Header="06"/> 
        <MenuItem Header="07"/> 
        <MenuItem Header="08"/> 
        <MenuItem Header="09"/> 
        <MenuItem Header="10"/> 
        <MenuItem Header="11"/> 
        <MenuItem Header="12"/> 
        <MenuItem Header="13"/> 
        <MenuItem Header="14"/> 
       </MenuItem> 
       <MenuItem Header="_Print"/> 
       <MenuItem Header="_Print Preview"/> 
       <MenuItem Header="_Exit"/> 

      </MenuItem> 
     </Menu>   

     <ToolBar x:Name="toolBar1" BorderBrush="Red" BorderThickness="3" Height="30" VerticalAlignment="Top" DockPanel.Dock="Top"> 
      <Button x:Name="Zoomin" Click="menuItemZoomin_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" Height="55" RenderTransformOrigin ="0.917,0.587" IsHitTestVisible="True" IsEnabled="True" FontFamily="Century Gothic" Content="Zoom In" /> 
      <Button x:Name="Zoomout" Click="menuItemZoomout_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" RenderTransformOrigin="0.917,0.587" Height="55" FontFamily="Century Gothic" Content="Zoom Out"/> 
      <Button x:Name="Print" Click="PrintBtn_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" RenderTransformOrigin="0.917,0.587" Height="55" FontFamily="Century Gothic" Content="Print"/> 
     </ToolBar> 


      <Canvas Background="Pink" DockPanel.Dock="Bottom" Height="25"> 
       <TextBlock Text="Bottom"/> 
      </Canvas> 

     <ScrollViewer> 
      <Canvas Background="Red" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
       <Button Content="Press"/> 
      </Canvas> 
     </ScrollViewer> 

    </DockPanel> 
</Window> 
+0

Должен ли я полностью избавиться от моей сетки и столбцов ??? –

+0

@nysu Я так думаю, см. Мой код и протестируйте его. – AnjumSKhan

+0

Я попробовал ваш пример, но он не загружал мой последний холст динамически. Вместо этого он показал все пустое. Однако, без загрузки холста, я не могу прокручивать и проверять, если панель инструментов и панель меню фиксированы или перемещаются ... –

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