WPF跨多个列表框行的跨度图像

时间:2015-08-23 19:05:25

标签: c# wpf listbox

我目前有一个包含多行的列表框,如果条件有效,我希望一行中的图像出现并跨越到下一行。这可能吗?我已经尝试了但是图像被下一行切断并且在#34;下面#34;下一个listboxitem而不是在它上面。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

是的,有可能。如果控件位于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重叠出现。你可以做同样的事情,但把你的图像放在画布里。