2

DataGrid.IsReadonly条件に基づいて変化するプロパティにバインドしました。には、セルの垂直方向の中央に配置するためにスタイルを設定する必要があっDataGridた列が含まれています。DataGridCheckBox

ただし、スタイルを適用した後、チェック ボックス列は親のIsReadonly値を尊重しません。つまり、その値に関係なく、checkboxクリックして変更できます。幾分似たような状況を扱っているかなりの数の投稿を見てきましたが、信頼できる解決策を見つけることができませんでした.

親グリッドデータの IsReadonly を尊重するように、チェックボックス列のスタイルを設定する方法を教えてください。その背後にある理論も高く評価されます。

これは私がスタイルを適用する方法です:

<Style x:Key="CenterStyleCB" TargetType="{x:Type CheckBox}">
      <Setter Property="HorizontalAlignment" Value="Center" />
      <Setter Property="VerticalAlignment" Value="Center" />
</Style>

<DataGridCheckBoxColumn ...  ElementStyle="{StaticResource CenterStyleCB}" />
4

1 に答える 1

0

次のコードをスタイルに追加します。

<Style.Triggers>
    <DataTrigger Binding="{Binding Path=Column.IsReadOnly, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridCell}}}" Value="True">
        <Setter Property="IsHitTestVisible" Value="False" />
    </DataTrigger>
</Style.Triggers>

DataGrid が常に ReadOnly である場合は、トリガーをスキップしてセッターを直接使用することをお勧めします。

于 2014-03-07T18:58:55.480 に答える