DataGridTextColumn での編集に使用される TextBox のスタイリングに問題があります。このコラムの背景:
- 「Top」(数値)というプロパティにバインドされています
- 列を無効にするトリガーとして使用される「ShowAll」というプロパティがあります
- 列が有効になっている場合は、TextBox のルック アンド フィールを TextBlock のルック アンド フィールと一致させたい (右揃え、垂直方向の中央揃え)。
セルは非編集モードで完璧に見えます。
(写真がないことをお詫びしますが、Stackoverflow は写真を投稿する前に 10 の評判ポイントを必要とします。皮肉なことに、初期の投稿の効果が低下します。ばかげたルール)
DataGridTextColumn.EditingElementStyle セクションを省略した場合 (つまり、デフォルトの編集スタイルを使用した場合)、セルがフォーカスを受け取ると、TextBox は DataGridTextColumn 内で左上に配置されます。
編集中の値が右揃えで垂直方向の中央に配置されるようにしたいと思います。しかし、ElementStyle に対して行ったのと同じ 2 つのスタイルを EditingElementStyle に追加すると、背景が青色になり、テキスト ボックスがセルを埋めません。
HorizontalContentAlignment (Stretch の値) などの他のセッターを試しましたが、うまくいきませんでした。これが私のコードです:
<DataGridTextColumn Header="Top" Binding="{Binding Path=Top}" Width="70">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="{x:Type TextBox}">
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.EditingElementStyle>
<DataGridColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding ShowAll}" Value="False">
<Setter Property="Foreground" Value="Transparent"/>
<Setter Property="Background" Value="LightGray"/>
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridColumn.CellStyle>
</DataGridTextColumn>