【问题标题】:TextBlock not wrapping inside grid column windows phoneTextBlock没有包裹在网格列Windows手机内
【发布时间】:2014-06-17 21:33:44
【问题描述】:

我有以下 xaml 定义。堆栈面板内的文本块没有换行。

<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>

我应该怎么做才能让它包裹起来?谢谢。

更新:

使用数据模板作为复选框内容时的对齐问题。

【问题讨论】:

  • 我的回答使内容换行。它比仅仅让 textBlock 换行要好。我更改了 CheckBox 的 ContentTemplate。请阅读。

标签: c# wpf xaml windows-phone-8 stackpanel


【解决方案1】:

您可以通过提供Width of TextBlock 来解决此问题。

【讨论】:

  • 它正在工作,但我不想给出实际尺寸,因为它可能会在不同的屏幕尺寸下产生问题。我还有其他方法可以使用吗?
  • 您可以为所有人指定一个通用宽度。或者你可以在 stackpanel 中有网格
【解决方案2】:

您不需要put a checkBox and a TextBlock into a StackPanel。要使 CheckBox 的内容 Wrap,只需使用 CheckBox 的 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>

运行图像是:

【讨论】:

  • 感谢它正在工作。但是内容和复选框没有正确对齐。有什么办法可以解决吗?
  • 可以在CheckBox的DataTemplate中设置TextBlock的TextAlignment。
  • 请检查更新后的图像是否存在对齐问题。
猜你喜欢
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2014-07-30
  • 2021-05-09
  • 2019-03-26
  • 2020-12-15
  • 1970-01-01
相关资源
最近更新 更多