我设计了一个项目,该项目具有用户定义的数据网格控件。控件的数据网格的某些列是具有双向绑定的 DataGridTextColumn(从/向绑定模型读取和写入数据)。DataGridTextColumn 的某些单元格包含很长的文本,无法在单元格中成功显示。我决定在这个单元格中放置滚动条。每个单元格列都包含一些用户定义的样式,因此我使用 DataGridCell 模板替换创建了自己的样式。这里是:
<Style x:Key="DataGridTextColumnWithScrollBar" TargetType="{x:Type Control}" BasedOn="{StaticResource {x:Type wpf_toolkit:DataGridCell}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Control}">
<ContentPresenter Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content, Mode=TwoWay}">
<ContentPresenter.ContentTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Text, Mode=TwoWay}"
TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"
VerticalAlignment="Stretch" Margin="2,0" BorderThickness="0"/>
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
样式 DataGridTextColumnWithScrollBar 与基本数据网格文本列单元格样式合并。它工作正常,但我无法编辑文本(所有滚动都会出现,但在编辑文本后,模型不会更新)。有什么办法可以解决我的问题吗?我尝试了很多方法(例如,在 controltemplate 中的 WPF 嵌套绑定)但没有任何效果......
PS 我无法将 datagridtext 列更改为 datatemplate textcolumn,因为控件存储在外部 dll 库中。
提前致谢。