2015-10-22 4 views
0

Мне нужно отключить редактирование в определенном столбце на основе триггера, но не работает.Wpf DataGridTextColumn с стилем элемента и ReadOnly

<DataGridTextColumn Binding="{Binding Qty,UpdateSourceTrigger=PropertyChanged}" Header="QTY" Width="100"> 
        <DataGridTextColumn.ElementStyle> 
         <Style TargetType="TextBlock"> 
          <Setter Property="HorizontalAlignment" Value="Right"></Setter> 
          <Style.Triggers> 
           <DataTrigger Binding="{Binding ItemType}" Value="Discount"> 
            <Setter Property="IsEnabled" Value="False"></Setter> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </DataGridTextColumn.ElementStyle> 
</DataGridTextColumn> 

ответ

0

Добавить это:

<DataGridTextColumn.EditingElementStyle> 
    <Style TargetType="TextBox"> 
     <Setter Property="HorizontalAlignment" Value="Right"></Setter> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ItemType}" Value="Discount"> 
       <Setter Property="IsEnabled" Value="False"></Setter> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</DataGridTextColumn.EditingElementStyle> 
+0

он бросает исключение при попытке отредактировать ячейку TargetType 'TextBlock' не совпадает с типом элемента 'TextBox'. – user2160275

+0

@ user2160275 Я отредактировал – Galma88

+0

Теперь горизонтальное выравнивание не работает, работает, только если я редактирую ячейку. Когда вы выходите из ячейки, выравнивание устанавливается слева налево, поэтому я раньше задал стиль элемента TextBlock. Я также пробовал горизонтальное выравнивание содержимого, но все равно ничего. – user2160275