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.