我遇到这个设计问题,我无法弄明白该怎么做,或者甚至不知道它叫什么,为什么我这么难以谷歌呢。
我有一个ListView,想要添加一个"精选"在那里的项目,右上角有一个三角形角,带有文字"精选"。像这样
以下是示例代码
XAML
<ScrollViewer HorizontalAlignment="Stretch">
<ListView x:Name="lstproductstype" HorizontalAlignment="Stretch" VirtualizingStackPanel.VirtualizationMode="Recycling" SelectionMode="None" IsActiveView="True" Background="Transparent">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="2" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Padding" Value="-1"/>
<Setter Property="Margin" Value="-2"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Border Width="590" Background="White" Height="220" BorderBrush="Gray" BorderThickness="0,0,1,1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid>
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<StackPanel HorizontalAlignment="Center" Orientation="Vertical" VerticalAlignment="Center" >
<TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" x:Name="txtblktype" Text="{Binding Name}" Foreground="Black" Margin="0,10,0,0" FontSize="21"/>
</StackPanel>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollViewer>
CS
MyData data1 = new MyData();
data1.id = 1;
data1.IsFeatured = true;
data1.Name = "Featured Item 1";
myDatas.Add(data1);
MyData data2 = new MyData();
data2.id = 2;
data2.IsFeatured = true;
data2.Name = "Featured Item 2";
myDatas.Add(data2);
MyData data3 = new MyData();
data3.id = 3;
data3.IsFeatured = false;
data3.Name = "Ordinary Item 3";
myDatas.Add(data3);
MyData data4 = new MyData();
data4.id = 4;
data4.IsFeatured = false;
data4.Name = "Ordinary Item 4";
myDatas.Add(data4);
lstproductstype.ItemsSource = myDatas;
答案 0 :(得分:0)
好的,我认为最简单的方法是使用多边形。只需弄清楚如何对角写文字。
答案 1 :(得分:0)
我的建议如下 在任何工具中创建如上图像 然后在每个单元格中使用2列,第二行使用图像
基于隐藏图像。
这应该更简单。
答案 2 :(得分:0)
制作一个带有透明背景和文字的featured.png。然后还将转换器从布尔值转换为可见性。然后将该图像放在边框中的文本块顶部,在这些文本块中,网格彼此叠加。
<Border ...>
<Grid>
<Grid>
<TextBlock .../>
</Grid>
<Grid>
<Image Source="featured.png"
VerticalAlignment="Top"
HorizontalAlignment="Right"
Visibility="{Binding IsFeatured, Converter={StaticResource BooleanToVisibilityConverter}"/>
</Grid>
</Grid>
</Border>
将转换器创建为窗口/ usercontrol中的资源。
<custom:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>