У меня есть сетка внутри средства просмотра прокрутки, размер которой я хочу изменять по мере добавления содержимого. В настоящее время он не изменяется, если я добавляю кнопку вне поля зрения. Что странно ... но не моя главная забота. Меня больше всего беспокоит то, что если я добавлю элементы в сетку программно, изменится ли она размер. Если нет, то что я должен использовать, чтобы изменить его размер.
Вот текущая идея
<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>
2 ответа
То, как вы пытаетесь использовать сетку, не так, как она работает. Чтобы он работал, вы должны определить как минимум строку или столбец. Затем вы можете разместить элементы управления в определенных строках и столбцах. Похоже, в вашем случае вам нужна только одна строка и столбец. Он находится в определении строки / столбца, где вы определяете размер и то, следует ли его изменять или нет.
<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. Это означает, что строка и столбец сохранят эти значения.
Привет, попробуйте удалить Width = "434" из DockPanel и другие ширины из вашего элемента управления Width = "100", если ширина фиксирована, чем вы не можете изменить размер, вы должны удалить свойство ширины, я надеюсь, что это сработает
РЕДАКТИРОВАТЬ: вы можете использовать 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" });
}
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.