データグリッドを使用したユーザー定義コントロールを持つプロジェクトを設計しました。コントロールのデータグリッドの一部の列は、双方向バインディング (バインディング モデルとの間でデータを読み書きするため) を備えた 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 Nested バインディング)が、何も機能しません...
PS コントロールは外部の dll ライブラリに格納されているため、datagridtext 列を datatemplate textcolumn に変更できません。
前もって感謝します。