【发布时间】:2021-04-14 19:07:56
【问题描述】:
我有一个带有 ItemTemplate 的 AdaptiveGridView 控件,它由一个 Grid 组成,该 Grid 包含一个 StackPanel 和一个 Icon 和一个 TextBlock。我想给 GridViewItem 的 ItemTemplate 的每个 Grid 一个不同的厚度。研究如何做到这一点,我发现将厚度参数绑定到 IValueConverter 是最好的方法。问题是当我尝试它时,我收到一条错误消息:
System.InvalidCastException:'无法将'Test.Models.SampleOrder'类型的对象转换为'Windows.UI.Xaml.Controls.GridViewItem'类型。'
这就是我正在尝试的:
Page.xaml
<Page.Resources>
<converter:IndexToBorderThicknessConverter x:Name="indexconverter"/>
</Page.Resources>
<Grid x:Name="ContentArea" VerticalAlignment="Center">
<controls:AdaptiveGridView
ItemsSource="{x:Bind ViewModel.Source,Mode=OneWay}"
<controls:AdaptiveGridView.ItemTemplate>
<DataTemplate x:DataType="models:SampleOrder">
<Grid
x:Name="itemThumbnail"
BorderBrush="Gray"
BorderThickness="{Binding Converter={StaticResource indexconverter}}"
Padding="{StaticResource XSmallLeftTopRightBottomMargin}"
Background="White">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<FontIcon Glyph="{x:Bind Symbol}" />
<TextBlock
Margin="{StaticResource XXSmallTopMargin}"
HorizontalAlignment="Center"
Style="{ThemeResource BodyTextStyle}"
Text="{x:Bind Company}" />
</StackPanel>
</Grid>
</DataTemplate>
</controls:AdaptiveGridView.ItemTemplate>
</controls:AdaptiveGridView>
</Grid>
IndexToBorderThicknessConverter.cs
public class IndexToBorderThicknessConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
GridViewItem item = (GridViewItem)value;
AdaptiveGridView gridView = ItemsControl.ItemsControlFromItemContainer(item) as AdaptiveGridView;
int index = gridView.Items.IndexOf(item);
Thickness thickness;
if (index % 2 == 0)
{
thickness = new Thickness(1);
}
thickness = new Thickness(2);
return thickness;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
我可以看到发送给转换器的是 SampleOrder 的模型,而不是 GridViewItem。所以我的问题是:如何发送 SampleOrder 的 GridViewItem 或如何从 SampleOrderSent 获取 GridViewItem?
非常感谢。
干杯!!!
【问题讨论】:
标签: gridview uwp ivalueconverter