2016-08-08 46 views
0

Ist es möglich, einen Stil/Behaviorto einer angegebenen Spalte in einer angegebenen Zeile in WPF C# zu beeinflussen?C# WPF DataGrid.RowStyle Spaltenstil festlegen

Im Moment habe ich dies:

    <DataTrigger Binding="{Binding Path=Status}" Value="2"> 
         <Setter Property="Grid.Column" Value="0"/> 
         <Setter Property="IsEnabled" Value="false" /> 
        </DataTrigger> 

Das Problem ist im Moment, dass die gesamte Zeile deaktiviert ist. Ich möchte nur die erste Spalte unter bestimmten Umständen deaktiviert werden.

Dies ist die Spalte ist, würde Ich mag deaktivieren:

  <DataGridTemplateColumn Header="Details" Width="100"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Button Click="ShowDetails">Details</Button> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

Antwort

0

Dies funktioniert (deaktivieren 2. Spalte "Y", wenn der Wert von "X" ist 3):

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="X" Binding="{Binding X}"/> 
      <DataGridTextColumn Header="Y" Binding="{Binding Y}"> 
       <DataGridTextColumn.CellStyle> 
        <Style TargetType="DataGridCell"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding X}" Value="3"> 
           <Setter Property="IsEnabled" Value="False"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </DataGridTextColumn.CellStyle> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 
+0

Danke für die Hilfe. Ich bekomme den Punkt, aber in meinem Fall habe ich DataGridTemplateColumn und ich weiß nicht, wie man eine Bindung macht. Überprüfen Sie meine bearbeitete Frage. – DJack

0

Die Lösung :

<DataGridTemplateColumn Header="Details" Width="100"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Button IsEnabled ="{Binding boolEnabled}" Click="ShowDetails">Details</Button> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn>