【问题标题】:How to display text in a WPF GridView that contains carriage returns如何在包含回车的 WPF GridView 中显示文本
【发布时间】:2012-04-12 11:55:24
【问题描述】:

我有一个网格视图,它有两个简单的列、一个报告编号和一个简短的描述。这个简短的描述通常有一些回车。如果是这种情况,我希望该行扩大其高度以适应所有文本。

目前,该字段可能会显示第一行,但随后会切断其下方的文本。如何显示所有文本,并根据需要调整高度?

这可以在每行的基础上完成吗,例如,如果下一个报告没有带回车的描述,它只会显示在一行上?

它会是 similar to this question,但在 WPF 与 ASP.net 中

这也可能是由于在应用程序范围内使用了主题。如果是这种情况,我怎样才能仅在此网格视图中强制执行?

XAML:

原来我只是把它当作

<GridViewColumn Width="365" Header="Desc" DisplayMemberBinding="{Binding desc}" />

我也试过了

<GridViewColumn x:Name="colDesc" Header="Desc" Width="75" >
     <GridViewColumn.CellTemplate>
          <DataTemplate>
              <TextBlock Text="{Binding Desc}" />
          </DataTemplate>
     </GridViewColumn.CellTemplate>
</GridViewColumn>

我们正在使用应用程序范围的主题,很可能会明确设置高。如果是这样,我主要倾向于(来自 cmets)主题覆盖其工作方式的默认值这一事实。如果是这样,我如何让它按照它应该的方式运行(同样,从 cmets 来看,这听起来像是默认行为)。

使用第二个示例,如下所示:

在这里,文本看起来更大,所以我希望单元格调整到所需的高度。其中一些有多行,所以你可以看到我看不到剩余的内容。我也尝试在文本块上设置高度,但这没有效果。

【问题讨论】:

  • 刚刚试过这个。 DataGridTextColumn 自动垂直调整大小以适应。
  • 您使用的是启用了环绕功能的文本框吗?
  • @Phil 很有趣。以每个单元格/行为基础?
  • @Blam 我本来不是,但后来做了一些搜索后添加了一个,结果变得更糟了。
  • 更糟糕的情况如何?你有Auto的高度吗?我将通过将带有换行符的单行/列绑定到文本控件来进行测试。你可能需要去 RichTextBox。

标签: c# wpf gridview multiline


【解决方案1】:

这行得通。

 public string TextBlockText { get { return "one line \r\ntwo line"; } }

 <TextBlock Height="Auto" Width="100" HorizontalAlignment="Left" Text="{Binding Path=TextBlockText}" />

关于如何将 TextBlock 放入 ListView,我将留给您。

【讨论】:

  • 这个问题与如何将其合并到网格视图中直接相关。我已经在代码中有这个,但要接受这个作为答案,我不能只将它放入 TextBlock
  • 我现在无法访问代码,因此为什么还没有。努力?如果我的评论显得粗鲁或苛刻,我很抱歉,我只是说文本块可以去任何地方,而我实际上担心它在网格中。这不是编程课,只是问一个问题,因为这显然不适合我。
  • 您的问题是“列表视图”,现在是“网格”。如果它不起作用,请发布不起作用的代码。
  • 对不起,我可能会互换使用这些术语。正在尝试访问代码。
  • 刚刚添加完 XAML。这很简单,但从阅读 cmets 来看,默认情况下它应该是这样工作的。
猜你喜欢
  • 1970-01-01
  • 2021-08-03
  • 2021-12-09
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多