WPF 跨越多个列表框行的跨度图像
WPF Span image across multiple listbox rows
我目前有一个包含多行的列表框,如果条件有效,我希望显示一行中的图像并跨越到下一行。这可能吗?我试过了,但图像被下一行截断并进入 "under" 下一个 listboxitem 而不是在它上面。任何帮助将不胜感激。
是的,这是可能的。如果控件位于 Canvas 内,它可以放在 canvas 的边界之外。所以基本上,您可以使用此功能来确保您的控件不被剪裁。因此,例如,您可以执行以下操作:
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Text}" />
<Canvas>
<Rectangle Visibility="{Binding ShowOverlap}" Width="100" Height="100" Opacity="0.5">
<Rectangle.Fill>
<ImageBrush ImageSource="house2.png" Stretch="UniformToFill" />
</Rectangle.Fill>
</Rectangle>
</Canvas>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
有一些代码隐藏:
public partial class MainWindow : Window
{
public class Item
{
public string Text { get; set; }
public Visibility ShowOverlap { get; set; }
}
public MainWindow()
{
InitializeComponent();
List<Item> items = new List<Item>();
items.Add(new Item() { Text = "Test1", ShowOverlap = Visibility.Hidden });
items.Add(new Item() { Text = "Test2", ShowOverlap = Visibility.Visible });
items.Add(new Item() { Text = "Test3", ShowOverlap = Visibility.Hidden });
DataContext = items;
}
}
您会看到一个 100 x 100 的矩形,与 ListViewItem 重叠。你可以做同样的事情,但是把你的图像放在 Canvas.
我目前有一个包含多行的列表框,如果条件有效,我希望显示一行中的图像并跨越到下一行。这可能吗?我试过了,但图像被下一行截断并进入 "under" 下一个 listboxitem 而不是在它上面。任何帮助将不胜感激。
是的,这是可能的。如果控件位于 Canvas 内,它可以放在 canvas 的边界之外。所以基本上,您可以使用此功能来确保您的控件不被剪裁。因此,例如,您可以执行以下操作:
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Text}" />
<Canvas>
<Rectangle Visibility="{Binding ShowOverlap}" Width="100" Height="100" Opacity="0.5">
<Rectangle.Fill>
<ImageBrush ImageSource="house2.png" Stretch="UniformToFill" />
</Rectangle.Fill>
</Rectangle>
</Canvas>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
有一些代码隐藏:
public partial class MainWindow : Window
{
public class Item
{
public string Text { get; set; }
public Visibility ShowOverlap { get; set; }
}
public MainWindow()
{
InitializeComponent();
List<Item> items = new List<Item>();
items.Add(new Item() { Text = "Test1", ShowOverlap = Visibility.Hidden });
items.Add(new Item() { Text = "Test2", ShowOverlap = Visibility.Visible });
items.Add(new Item() { Text = "Test3", ShowOverlap = Visibility.Hidden });
DataContext = items;
}
}
您会看到一个 100 x 100 的矩形,与 ListViewItem 重叠。你可以做同样的事情,但是把你的图像放在 Canvas.