2015-07-24 3 views
0

Это мой DataGridTemplateBinding ReadOnly от DataGridCell

<DataGrid Name="OrderItemList" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Code" Binding="{Binding Code}" IsReadOnly="True" /> 
     <DataGridTextColumn Header="Price" Binding="{Binding Price`}" IsReadOnly="True" /> 
     <DataGridTextColumn Header="Qty" Binding="{Binding Qty}" /> 
     <DataGridTextColumn Header="" Width="*"/> 
    </DataGrid.Columns> 
</DataGrid> 

Это мой стиль

<Style TargetType="{x:Type DataGridCell}"> 
    <Style.Triggers> 
     <Trigger Property="DataGridCell.IsSelected" Value="True"> 
      <Setter Property="Background" Value="#F1F1F1" /> 
     </Trigger> 
    </Style.Triggers> 

    <Setter Property="Padding" Value="10" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Text, Mode=TwoWay, UpdateSourceTrigger=Default}" 
       HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" 
       BorderThickness="0" IsReadOnly="...." /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Как я могу связать DataGridTextColumn.IsReadOnly к TextBox.IsReadOnly?

ответ

1

DataGridCell имеет свойство Column, которое возвращает столбец, которому принадлежит ячейка.

Попробуйте что-нибудь наподобие IsReadOnly="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Column.IsReadOnly, Mode=OnTime}"

Смежные вопросы