text wrapping in grid in view panel?
I want to write a questionnaire. It will be in a tab. I would like three columns: Question Number, Question, Group Box. I will have 14 of these so everything has to have their own row. The text in column 2 will sometimes be long enough to wrap. I feel like I have tried every combination, but I either get really big font or really small font. I'd like to be able to resize the window. Whatever I have done most recently makes it resize vertically, but no horizontally. I am very much a beginner so I apologize in advance for spacing.
<Grid>
<Label Name="ADCS" Content="ADCS" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="6" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="270*" />
<ColumnDefinition Width="54*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Viewbox>
<StackPanel HorizontalAlignment="Left" Name="stackPanel2">
<Label Name="a1" Content="1." Grid.Column="1" Grid.Row="1" Margin="6" />
<Label Name="lblADCS1" Grid.Column="2" Grid.Row="1" Margin="6" />
<TextBlock
Text="Do you like cheese?" TextWrapping = "WrapWithOverflow">
</TextBlock>
<GroupBox Header="ADCS1" Grid.Row="1" Grid.Column="3">
<StackPanel Orientation="Horizontal" >
<RadioButton Margin ="5" Name="Yes__1" />
<开发者_Python百科RadioButton Margin ="5" Name="No__1" />
<RadioButton Margin ="5" Name="Maybe__1" />
<RadioButton Margin ="5" Name="Clear__1" />
</StackPanel>
</GroupBox>
<Label Name="a2" Content="2." Grid.Column="1" Grid.Row="2" Margin="6" />
<Label Name="lblADCS2" Grid.Column="2" Grid.Row="2" Margin="6">
<TextBlock
Text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua?"
TextWrapping = "WrapWithOverflow">
</TextBlock>
</Label>
<GroupBox Header="ADCS2" Grid.Column="3" Grid.Row="2" >
<StackPanel Orientation="Horizontal" >
<RadioButton Margin ="5" Name="Yes__2" />
<RadioButton Margin ="5" Name="No__2" />
<RadioButton Margin ="5" Name="Maybe__2" />
<RadioButton Margin ="5" Name="Clear__2" />
</StackPanel>
</GroupBox>
</StackPanel>
</Viewbox>
</Grid>
</Grid>
If you are going to do that for 14 questions I suggest a data driven solution. Write a Question class and add 14 Question objects to a collection and databind the collection to a itemscontrol with some datatemplate.
Anyway, below is a grid that shows two questions with text wrapping.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="1" /> <!--Question Number-->
<TextBlock Grid.Column="1" Grid.Row="0" TextWrapping="WrapWithOverflow" Text="Do you like cheese?" /> <!--Question-->
<GroupBox Header="ADCS1" Grid.Row="0" Grid.Column="2"> <!--Group Box-->
<StackPanel Orientation="Horizontal" >
<RadioButton Content="A" />
<RadioButton Content="B" />
<RadioButton Content="C" />
</StackPanel>
</GroupBox>
<Label Grid.Column="0" Grid.Row="1" Content="1" /> <!--Question Number-->
<TextBlock Grid.Column="1" Grid.Row="1" TextWrapping="WrapWithOverflow" Text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua?" /> <!--Question-->
<GroupBox Header="ADCS1" Grid.Row="1" Grid.Column="2"> <!--Group Box-->
<StackPanel Orientation="Horizontal" >
<RadioButton Content="A" />
<RadioButton Content="B" />
<RadioButton Content="C" />
</StackPanel>
</GroupBox>
</Grid>
I've changed a bit your code:
- removed nested Viewbox, Grid and StackPanel, not sure why would you need them all together here
- made the StackPanel stretched
- added scrollviewer
see if it will work for you
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Name="ADCS" Content="ADCS" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="6" />
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
<StackPanel HorizontalAlignment="Stretch" Name="stackPanel2" >
<Label Name="a1" Content="1." Margin="6" />
<Label Name="lblADCS1" Margin="6">
<TextBlock
Text="Do you like cheese?" TextWrapping = "WrapWithOverflow">
</TextBlock>
</Label>
<GroupBox Header="ADCS1">
<StackPanel Orientation="Horizontal" >
<RadioButton Margin ="5" Name="Yes__1" />
<RadioButton Margin ="5" Name="No__1" />
<RadioButton Margin ="5" Name="Maybe__1" />
<RadioButton Margin ="5" Name="Clear__1" />
</StackPanel>
</GroupBox>
<Label Name="a2" Content="2." Margin="6" />
<Label Name="lblADCS2" Margin="6">
<TextBlock
Text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua?"
TextWrapping = "WrapWithOverflow">
</TextBlock>
</Label>
<GroupBox Header="ADCS2" >
<StackPanel Orientation="Horizontal" >
<RadioButton Margin ="5" Name="Yes__2" />
<RadioButton Margin ="5" Name="No__2" />
<RadioButton Margin ="5" Name="Maybe__2" />
<RadioButton Margin ="5" Name="Clear__2" />
</StackPanel>
</GroupBox>
</StackPanel>
</ScrollViewer>
</Grid>
hope this helps, regards
精彩评论