Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在网格中,如何设置文本块';s宽度_Wpf - Fatal编程技术网

Wpf 在网格中,如何设置文本块';s宽度

Wpf 在网格中,如何设置文本块';s宽度,wpf,Wpf,我有一个网格,有两列,这里是定义 <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="180"></ColumnDefinition> <ColumnDefinition Width="auto"></ColumnDefinition> </Grid.ColumnDefinitions> &

我有一个网格,有两列,这里是定义

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="180"></ColumnDefinition>
        <ColumnDefinition Width="auto"></ColumnDefinition>
    </Grid.ColumnDefinitions>   
    <TextBlock Name="nText" Text="{Binding Name}" Grid.Column="0" />
    <TextBlock Name="vText" Text="{Binding Value}" Grid.Column="1" HorizontalAlignment="Left" TextWrapping="Wrap"/>
</Grid>

我的问题是,对于vText,当文本太长时,无论columndefinition width是auto还是*,都无法包装文本。但是如果我将定义的值设置为第2列的宽度或vText的宽度,文本将被包装

如何设置文本块的宽度,以便可以包装文本内容

我尝试绑定到columnDefinition的宽度/实际宽度,但也失败了

非常感谢。


<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="180"></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <TextBlock Grid.Column="0" Grid.Row="0" Name="nText" Text="nText"/>
    <TextBlock Grid.Column="1" Grid.Row="0" Name="vText" TextWrapping="Wrap">
        vText vTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvText
        vTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvText
        vTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvText
    </TextBlock>
</Grid>
vText VTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVText VTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVText VTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVTextVText
详细说明BalamBalam的答案,改变

<ColumnDefinition Width="auto"></ColumnDefinition>


将执行您想要的操作,因为
“auto”
模式希望根据子元素推断其大小。在这种情况下,TextBlock没有定义宽度,因此ColumnDefinition无法推断宽度

因为ColumnDefinition和TextBlock都没有定义宽度,所以TextBlock的宽度将默认为无穷大,而word wrap算法将永远不会剪裁文本

相比之下,
“*”
意味着填充剩余空间,剩余空间将由网格定义(如果在网格上设置宽度),或者由其父网格之一定义。最坏的情况是,
“*”
将能够在顶层找到一个值,因为窗口总是设置了宽度/高度


希望这能让我们更清楚地了解布局引擎是如何在大小方面发挥其魔力的

谢谢你的回复。如何为文本使用绑定数据?是否尝试使用现有的绑定?根据这个问题,装订是有效的,只是没有包装。谢谢。我试过“自动”和“*”,结果是一样的。网格周围包含哪些控件?*如果FrameworkElement链上有一个尺寸,则应该能够获得非无限大的尺寸。如果在网格上设置宽度,“*”是否仍然不起作用?
<ColumnDefinition Width="*"></ColumnDefinition>