2017-03-02 1 views
2

Ich möchte wissen, wie Sie den Zeilenindex der Spaltenindex im Code verwendet wird unten in der gleichen Weise als Bedingung zu verwenden:Wie Verwenden von Zeilenindex als eine Bedingung in einem Multitrigger für einen DataGridCell-Stil in WPF XAML?

die gesamte erste Spalte des Datagrid In diesem Beispiel
<Style x:Key="DefaultDataGridCell" TargetType="{x:Type DataGridCell}"> 
<Setter Property="IsTabStop" Value="False" /> 
<Style.Triggers> 
    <MultiDataTrigger> 
     <MultiDataTrigger.Conditions> 
      <Condition Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Column.DisplayIndex}" Value="0" /> 
     </MultiDataTrigger.Conditions> 
     <Setter Property="IsTabStop" Value="True" /> 
    </MultiDataTrigger> 
</Style.Triggers> 

ist tabstop, aber ich brauche nur die erste Zelle des DataGrid tabstop. Wie kann ich es tun?

Antwort

0

Es gibt keine Eigenschaft, die Sie, dass gibt den Index der Zeile binden kann, aber die DataGridRow Klasse hat eine GetIndex() Methode, die Sie in einem Konverter Klasse nennen könnte:

namespace WpfApplication1 
{ 

    public class MyConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      return (value as DataGridRow).GetIndex(); 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 

<Style x:Key="DefaultDataGridCell" TargetType="{x:Type DataGridCell}" 
       xmlns:local="clr-namespace:WpfApplication1"> 
    <Style.Resources> 
     <local:MyConverter x:Key="conv" /> 
    </Style.Resources> 
    <Setter Property="IsTabStop" Value="False" /> 
    <Style.Triggers> 
     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Column.DisplayIndex}" Value="0" /> 
       <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Converter={StaticResource conv}}" Value="0" /> 
      </MultiDataTrigger.Conditions> 
      <Setter Property="IsTabStop" Value="True" /> 
     </MultiDataTrigger> 
    </Style.Triggers> 
</Style> 

Sie können jedoch nicht direkt an eine Methode binden, daher müssen Sie einen Konverter verwenden.

Verwandte Themen