Текстовый блок не переносится внутрь столбца сетки Windows phone

#c# #wpf #xaml #windows-phone-8 #stackpanel

#c# #wpf #xaml #windows-phone-8 #stackpanel

Вопрос:

У меня есть следующее определение xaml. Текстовый блок внутри stackpanel не переносится.

 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

    <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="auto" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <toolkit:PhoneTextBox x:Name="NotesText" Grid.Row="0" Grid.ColumnSpan="2" Hint="Add Notes" AcceptsReturn="True" Height="290" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" />
        <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="0" >
            <CheckBox x:Name="showRequester" FontSize="{StaticResource PhoneFontSizeSmall}" HorizontalAlignment="Left" />
            <TextBlock TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Left" Text="option_show_to_requester" />
        </StackPanel>
        <CheckBox Grid.Row="1" Grid.Column="1" Content="Mail To Technicain" FontSize="{StaticResource PhoneFontSizeSmall}" HorizontalAlignment="Right" />

    </Grid>
  

Обратите внимание на текстовый блок, выходящий за пределы столбца

Что я должен сделать, чтобы он переносился? Спасибо.

Обновить: введите описание изображения здесь

Проблема с выравниванием при использовании шаблона данных для содержимого флажка.

Комментарии:

1. Мой ответ делает перенос содержимого. и это лучше, чем просто перенос текстового блока. Я меняю ContentTemplate флажка. Пожалуйста, прочтите это.

Ответ №1:

Вы можете решить эту проблему, предоставив Width of TextBlock .

Комментарии:

1. Он работает, но я не хочу указывать фактический размер, поскольку это может создать проблемы с разными размерами экрана. Есть ли какой-либо другой способ, который я могу использовать?

2. Вы можете указать общую ширину для всех. или вы можете иметь сетку в stackpanel

Ответ №2:

Вам не нужно put a checkBox and a TextBlock into a StackPanel . Чтобы перенести содержимое флажка, просто используйте ContentTemplate флажка.

     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="auto" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <toolkit:PhoneTextBox x:Name="NotesText" Grid.Row="0" Grid.ColumnSpan="2" Hint="Add Notes" AcceptsReturn="True" Height="290" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" />
        <!--Use ContentTemplate of CheckBox-->
        <CheckBox Grid.Row="1" Grid.Column="0">
            <CheckBox.ContentTemplate>
                <DataTemplate>
                    <TextBlock Text="option_show_to_requester" TextWrapping="Wrap"/>
                </DataTemplate>
            </CheckBox.ContentTemplate>
        </CheckBox>
        <CheckBox Grid.Row="1" Grid.Column="1" Content="Mail To Technicain" FontSize="{StaticResource PhoneFontSizeSmall}" HorizontalAlignment="Right" />

    </Grid>
  

для простого примера:

 <Grid Grid.Row="1" x:Name="ContentRoot" Tapped="ContentRoot_Tapped">             
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
        <RowDefinition Height="auto" />
        <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <CheckBox Grid.Column="0">
        <CheckBox.ContentTemplate>
            <DataTemplate>
                <TextBlock TextAlignment="Center" Text="wrap123123123123wrap" TextWrapping="Wrap"/>     
            </DataTemplate>
        </CheckBox.ContentTemplate>
    </CheckBox>
    <CheckBox Grid.Column="1">
        <CheckBox.ContentTemplate>
            <DataTemplate>
                <TextBlock Text="nowrap" TextWrapping="Wrap"/>
            </DataTemplate>
        </CheckBox.ContentTemplate>
    </CheckBox>            
</Grid>
  

И образ запуска:
введите описание изображения здесь

Комментарии:

1. Спасибо, он работает. Но содержимое и флажок не выровнены должным образом. Есть ли способ, которым я могу это решить?

2. Вы можете установить выравнивание текста текстового блока в табличке данных флажка.

3. Пожалуйста, проверьте обновленное изображение на предмет проблемы с выравниванием.