Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
如何使用TextWrapping(WPF)获得ListView(或DataGrid)_Wpf_Listview_Datagrid_Word Wrap - Fatal编程技术网

如何使用TextWrapping(WPF)获得ListView(或DataGrid)

如何使用TextWrapping(WPF)获得ListView(或DataGrid),wpf,listview,datagrid,word-wrap,Wpf,Listview,Datagrid,Word Wrap,我的意思是,我有一个控件,其中一列中有文本。 通常,若用户更改列大小,它只是剪切文本。如果我试图将模板与textblock或textbox一起使用,并在模板内部设置TextWrapping=“Wrap”-它实际上不会改变任何东西。 出路是什么 *是的,我在询问之前搜索过,在这个网站上发现了类似的问题。但没有回答((* 安迪,谢谢你的回答,虽然我自己也在想应该这样做。 我检查了你的简单变体,它可以工作。虽然我有一个类似的例子,但它不起作用。唯一的区别是,在模板中,我使用了我的UserContro

我的意思是,我有一个控件,其中一列中有文本。 通常,若用户更改列大小,它只是剪切文本。如果我试图将模板与textblock或textbox一起使用,并在模板内部设置TextWrapping=“Wrap”-它实际上不会改变任何东西。 出路是什么

*是的,我在询问之前搜索过,在这个网站上发现了类似的问题。但没有回答((*


安迪,谢谢你的回答,虽然我自己也在想应该这样做。 我检查了你的简单变体,它可以工作。虽然我有一个类似的例子,但它不起作用。唯一的区别是,在模板中,我使用了我的UserControl,它的内容属性内的StackPanel中有TextBlock和其他控件。在试验了一个小时后,在不同的部分使用宽度、水平对齐等我明白,我什么也做不了。
然后-我刚刚用Grid更改了StackPanel。还有-viola!-它工作了。我不知道这是一个bug还是StackPanel的一些特定反应(实际上我在运行时检查了它的参数-这很奇怪:实际宽度超过了面板的期望大小和实际宽度).所以如果有人能告诉我-为什么会这样?-这会很有趣。如果没有-我将只使用带有网格的版本。

以下内容对我有用:

<ListView ItemsSource="{Binding Source={StaticResource MyItems}}">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="50" Header="Column 1">
                <GridViewColumn.CellTemplate>
                    <DataTemplate x:Name="col1Template">
                        <TextBlock TextWrapping="WrapWithOverflow" Text="{Binding Path=Column1Text}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            ...
        </GridView>
    </ListView.View>
</ListView>

...

如果列的宽度不足以显示所有文本,则会导致第一列中的文本换行到多行。

请确保未定义datagrid RowHeight,否则将在换行后覆盖textblock的“真实”高度