2013-11-15 4 views
0

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

private void ShowHideMotorsButtonClick(object sender, RoutedEventArgs e) 
    { 

      Motor1WFH.Visibility = Visibility.Hidden; 
      Motor2WFH.Visibility = Visibility.Hidden; 
      MainTabControl.Margin = new Thickness(12, 12, 165, 12); 
      this.WindowState = System.Windows.WindowState.Maximized; 
    } 

код XAML:

<Grid > 
    <WindowsFormsHost Height="200" HorizontalAlignment="Right" Margin="0,43,12,0" VerticalAlignment="Top" Width="300" Name="Motor1WFH"> 
     <apt:MG17Motor x:Name="Motor1" /> 
    </WindowsFormsHost> 
    <WindowsFormsHost Height="200" HorizontalAlignment="Right" Margin="0,249,11,0" VerticalAlignment="Top" Width="300" Name="Motor2WFH"> 
     <apt:MG17Motor x:Name="Motor2" /> 
    </WindowsFormsHost> 
    <TabControl Margin="12,12,318,12" Name="MainTabControl"> 
    ... 

но ниже код работает:

private void ShowHideMotorsButtonClick(object sender, RoutedEventArgs e) 
    { 

      Motor1WFH.Visibility = Visibility.Hidden; 
      Motor2WFH.Visibility = Visibility.Hidden; 
      this.WindowState = System.Windows.WindowState.Maximized; 
    } 

, когда я не ставлю отступа для MainTabControl.

Как я могу Максимизировать его и что не так?

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

enter image description here enter image description here

+1

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

ответ

0

Вот простой пример, который может быть полезен, поместите элементы управления левой стороны в свою сетку. Сначала XAML:

<Grid Name="MainGrid"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="100"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <Grid Grid.Column="0"> 
     <TabControl> 
      <TabItem Header="+"/> 
      <TabItem Header="-"/> 
      <TabItem Header="Other"/> 
     </TabControl> 
    </Grid> 

    <Grid Grid.Column="1"> 
     <TabControl> 
      <TabItem Header="Option 1"/> 
      <TabItem Header="Option 2"/> 
      <TabItem Header="Option 3"/> 
     </TabControl> 
     <Button Background="Black" Width="30" Height="20" 
      HorizontalAlignment="Right" VerticalAlignment="Top" Click="OnExpBtnClick"/> 
    </Grid> 
</Grid> 

Затем код позади:

private void OnExpBtnClick(object sender, RoutedEventArgs e) 
    { 
     if (_exp) 
     { 
      _exp = false; 
      MainGrid.ColumnDefinitions[0].Width = _origWidth; 
     } 
     else 
     { 
      _exp = true; 
      _origWidth = MainGrid.ColumnDefinitions[0].Width; 
      MainGrid.ColumnDefinitions[0].Width = new GridLength(0.0, GridUnitType.Pixel); 
     } 
    } 

Если следующие области видимости класса

private bool _exp; 
    private GridLength _origWidth; 
+1

@abdolah Я не хотел становиться слишком громоздким, но в идеале вы должны в конечном итоге изменить эту «частную GridLength _origWidth» на зависимую опору (или, по крайней мере, на свойство) и т. Д. – narendra

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