使用 AlternationIndex 的格式/样式
Format/ Style using AlternationIndex
我有一个项目控件,如果它是最后一个项目,我想显示一个按钮。是否可以使用 AlternationIndex 来做到这一点?
<Button.Style>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource RoundButton}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}}, Path=(ItemsControl.AlternationIndex)}" Value="0"> <!-- What do I give here? 0 hides first row -->
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
可能有点复杂,但您可以在 DataTrigger 中使用 MultiBinding,它将 AlternationIndex
属性 与 ItemsControl 的项目的 Count
属性 进行比较:
<Style TargetType="Button" BasedOn="{StaticResource RoundButton}">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource IsLastItemConverter}">
<Binding Path="(ItemsControl.AlternationIndex)"
RelativeSource="{RelativeSource
AncestorType=ContentPresenter}"/>
<Binding Path="Items.Count"
RelativeSource="{RelativeSource
AncestorType=ItemsControl}"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
多值转换器如下所示:
public class IsLastItemConverter : IMultiValueConverter
{
public object Convert(
object[] values, Type targetType, object parameter, CultureInfo culture)
{
var index = (int)values[0];
var count = (int)values[1];
return index == count - 1;
}
public object[] ConvertBack(
object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
我有一个项目控件,如果它是最后一个项目,我想显示一个按钮。是否可以使用 AlternationIndex 来做到这一点?
<Button.Style>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource RoundButton}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}}, Path=(ItemsControl.AlternationIndex)}" Value="0"> <!-- What do I give here? 0 hides first row -->
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
可能有点复杂,但您可以在 DataTrigger 中使用 MultiBinding,它将 AlternationIndex
属性 与 ItemsControl 的项目的 Count
属性 进行比较:
<Style TargetType="Button" BasedOn="{StaticResource RoundButton}">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource IsLastItemConverter}">
<Binding Path="(ItemsControl.AlternationIndex)"
RelativeSource="{RelativeSource
AncestorType=ContentPresenter}"/>
<Binding Path="Items.Count"
RelativeSource="{RelativeSource
AncestorType=ItemsControl}"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
多值转换器如下所示:
public class IsLastItemConverter : IMultiValueConverter
{
public object Convert(
object[] values, Type targetType, object parameter, CultureInfo culture)
{
var index = (int)values[0];
var count = (int)values[1];
return index == count - 1;
}
public object[] ConvertBack(
object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}