2012-04-12 8 views
1

私はそれに2の交替指数を持つリストボックスを持っています。次に、異なる交代指数のスタイリングを提供するようにスタイルを設定しました。データトリガーによる代替インデックス

<Style x:Key="ListBoxItemStyle" TargetType="{x:Type ListBoxItem}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
       <Grid> 
        <Border x:Name="Bd" SnapsToDevicePixels="true"> 
         <ContentPresenter Margin="{TemplateBinding Padding}" 
              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
        </Border> 
        <Rectangle x:Name="HoverRectangle" 
           Height="Auto" 
           SnapsToDevicePixels="True" 
           Stroke="{StaticResource Gold}" 
           StrokeDashCap="Square" 
           StrokeThickness="0" /> 
        <Rectangle x:Name="KeyboardFocusRectangle" 
           Height="Auto" 
           SnapsToDevicePixels="True" 
           Stroke="{StaticResource BrightBlue}" 
           StrokeDashCap="Square" 
           StrokeThickness="0" /> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="ItemsControl.AlternationIndex" Value="1"> 
         <Setter TargetName="Bd" Property="Background" Value="{StaticResource LightGray}" /> 
        </Trigger> 
        <Trigger Property="ItemsControl.AlternationIndex" Value="0"> 
         <Setter TargetName="Bd" Property="Background" Value="{StaticResource VeryLightGray}" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

また、将来発生するアイテムの背景も変更したいと考えています。私はブール値を返す関数IsFutureを持っています。私は、このコードをデータテンプレートで作業して背景をスタイルするようにしました。

<DataTemplate x:Key="MeetingListItemTemplate"> 
    <Grid x:Name="grid"> 
      <!-- Removed lots of stuff here--> 
    </Grid> 
    <DataTemplate.Triggers> 
     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding Path=IsFuture}" Value="True"/> 
      </MultiDataTrigger.Conditions> 
      <MultiDataTrigger.Setters> 
       <Setter Property="Background" Value="#0094d6" TargetName="grid"/> 
      </MultiDataTrigger.Setters> 
     </MultiDataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 

私はので、私は交代インデックスのための条件を持っている可能性がMutliDataTriggerを設定してから、私は、それぞれ交互に異なるブルーを使用しますが、私はここから交代指標を得ることができるかどうかはわかりません。何か案は?

+0

RelativeSourceバインディングを使用して、親ItemsControlのAlternationIndexプロパティを取得しようとしましたか? – Andy

+0

これは私が必要とするものですが、私はまだXAMLの新機能であり、正しくバインドする方法がわかりません。 – Rumel

答えて

2
<MultiDataTrigger.Conditions> 
    <Condition Binding="{Binding Path=IsFuture}" Value="true" /> 
    <Condition Binding="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(ItemsControl.AlternationIndex)}" Value="0"/> 
</MultiDataTrigger.Conditions> 

TemplatedParent RelativeSourceモードを試してみてください。

0

あなたは親ItemsControlAlternationIndexプロパティにバインドするバインディングRelativeSourceを使用することができるはずです。

<MultiDataTrigger.Conditions> 
    <Condition Binding="{Binding Path=IsFuture}" Value="True" /> 
    <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ItemsControl}, Path=AlternationIndex}" Value="1" 
</MultiDataTrigger.Conditions>