【发布时间】:2014-08-28 08:12:01
【问题描述】:
我设计了一个项目,该项目具有用户定义的数据网格控件。控件的数据网格的某些列是具有双向绑定的 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 与基本数据网格文本列单元格样式合并。它工作正常,但我无法编辑文本(所有滚动都会出现,但在编辑文本后,模型不会更新)。有什么办法可以解决我的问题吗?我尝试了很多方法(例如,WPF Nested binding in a controltemplate)但没有任何效果...
附:我无法将 datagridtext 列更改为 datatemplate textcolumn,因为控件存储在外部 dll 库中。
提前致谢。
【问题讨论】:
-
也许您需要为单元格模板和单元格编辑模板定义两个单独的模板。对两者使用相同可能会导致此类问题。您能否分享更多有关如何使用此模板的代码,我们会尝试为您提供一些解决方案。
-
我将此样式与链接到 datagridtextcolumn cellstyle 属性的默认样式合并。你能告诉我单元格模板和单元格编辑模板的模板示例吗?
-
我只有这个代码
-
您使用的是哪个版本的
WPF Toolkit? -
.Net 3.5 版本
标签: c# wpf datagrid datatemplate datagridcell