2014-12-16 3 views
0

У меня есть сетка внутри scrollviewer, которую я хочу изменить при добавлении контента. В настоящее время он не изменяет размер, если я добавлю кнопку к ней вне поля зрения. Что странно ... но не моя главная забота. Моя основная проблема заключается в том, что если я добавлю элементы в сетку программно, изменит ли она ее. Если нет, то что я должен использовать, чтобы изменить размер.C# WPF Изменение сетки при добавлении содержимого

Вот текущая идея

<DockPanel HorizontalAlignment="Left" Height="266" LastChildFill="False" VerticalAlignment="Top" Width="434"> 
    <Menu Height="20" VerticalAlignment="Top" DockPanel.Dock="Top"> 
     <MenuItem Header="MenuItem"> 
      <MenuItem Header="MenuItem" HorizontalAlignment="Left" Width="145"/> 
     </MenuItem> 
    </Menu> 
    <ScrollViewer DockPanel.Dock="Bottom" Height="246" RenderTransformOrigin="0.5,0.5"> 
     <Grid Height="173" Width="100"/> 

    </ScrollViewer> 
</DockPanel> 

ответ

0

, как вы пытаетесь использовать сетку не так, как это работает. Чтобы он работал, вы должны определить как минимум строку или столбец. Затем вы можете разместить свои элементы управления в определенных строках и столбцах. Похоже, в вашем случае вам нужна только одна строка и столбец. Это определение в строке/столбце, где вы определяете размер и должен ли он изменяться или нет.

<ScrollViewer DockPanel.Dock="Bottom" Height="246" RenderTransformOrigin="0.5,0.5"> 
    <Grid> 
     <!--Define rows and columns--> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/>    
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 

     <!--Place a control in the grid--> 
     <Button Grid.Row="0" Grid.Column="0" Width="100" Height="100"/> 
    </Grid> 
</ScrollViewer> 

В Height и Width свойства установлены в Auto. Это означает, что они будут перенастраиваться на размер контента. Например, в приведенном выше примере высота и ширина кнопки установлены равными 100. Это означает, что строка и столбец будут поддерживать эти значения.

0

Привет попробуйте удалить Width = "434" из ваших DockPanel и других ширин от управлять Ширина = "100", если ширина фиксируется, чем вы can not resize вы должны удалить свойство ширины, я надеюсь, что работает

EDIT: Вы можете использовать StackPanel enstead Grid, ваша проблема заключалась в том, что вы добавляете какой-либо элемент, добавляя верхний элемент другого элемента. XAML код:

<DockPanel HorizontalAlignment="Left" VerticalAlignment="Top" > 
    <Menu Height="20" VerticalAlignment="Top" DockPanel.Dock="Top"> 
     <MenuItem Header="MenuItem"> 
      <MenuItem Header="MenuItem" HorizontalAlignment="Left" Width="145"/> 
     </MenuItem> 
    </Menu> 
    <ScrollViewer DockPanel.Dock="Bottom" > 
     <StackPanel Name="uiStack" Orientation="Vertical"> 


     </StackPanel> 
    </ScrollViewer> 
    <Button Content="Click me" Click="Button_Click"></Button> 
</DockPanel> 

CodeBehind:

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     uiStack.Children.Add(new Button() { Content = "Button1" }); 
     uiStack.Children.Add(new TextBlock() { Text = "Button1" }); 
    } 
+0

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

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