【问题标题】:WPF DataGridTextColumn multi-line inputWPF DataGridTextColumn 多行输入
【发布时间】:2011-09-15 07:55:47
【问题描述】:

我在 .NET 4 中使用具有 DataGridTextColumn 的 WPF DataGrid 控件。

我希望能够输入多行文本。 当我将数据绑定到列时,换行符的格式正确,但我发现在编辑文本时无法创建换行符。

<DataGrid ItemsSource="{Binding MyMessages}">
   <DataGrid.Columns>
      <DataGridTextColumn Header="Message" Binding="{Binding Path=Message}"  Width="Auto"/>
   <DataGrid.Columns>
</DataGrid>

有什么建议吗?

【问题讨论】:

    标签: wpf wpfdatagrid


    【解决方案1】:

    试试:

    <DataGridTextColumn Header="Message" Binding="{Binding Path=Message}"  Width="Auto">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="TextWrapping" Value="Wrap" />
                </Style>
            </DataGridTextColumn.ElementStyle>
            <DataGridTextColumn.EditingElementStyle>
                <Style TargetType="TextBox">
                    <Setter Property="TextWrapping" Value="Wrap" />
                    <Setter Property="AcceptsReturn" Value="true" />
                </Style>
            </DataGridTextColumn.EditingElementStyle>
        </DataGridTextColumn>
    

    【讨论】:

    • 注意:在我的情况下,这有效,但前提是我设置 DataGrid.Horizo​​ntalScollBarVisibility = "Disabled" per social.msdn.microsoft.com/Forums/en-US/wpf/thread/… 一旦我这样做了,我的行开始调整大小。
    • 有没有人在单独的样式资源中解决了这样做的语法?我现在遇到了这个问题,我一辈子都找不到工作风格资源来完成这项工作!
    • 为了防止逐字符换行并启用逐空格换行,请使用Property="TextWrapping" Value="WrapWithOverflow"
    【解决方案2】:

    xmlns:wtk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
    
    <DataTemplate x:Key="dataGridMultiLineTextBoxTemplateColumn" DataType="your data type">
            <wtk:MultiLineTextEditor
                x:Name="MultiLineTextBox"
                Width="300"
                Margin="2"
                Padding="5,0,0,0"
                FontSize="12"
                FontWeight="Normal"
                Foreground="Black"
                IsSpellCheckEnabled="True"
                Text="{Binding your binding property, Mode=TwoWay, NotifyOnTargetUpdated=True, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                TextWrapping="Wrap" />
        </DataTemplate>

    扩展的 WPF 工具包 MultiLineTextEditor 将提供您所需要的。 Extended WPF Toolkit MultiLineTextEditor

    【讨论】:

    • 你能扩展一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2012-04-06
    • 2019-04-18
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多