我目前有一个包含多行的列表框,如果条件有效,我希望一行中的图像出现并跨越到下一行。这可能吗?我已经尝试了但是图像被下一行切断并且在#34;下面#34;下一个listboxitem而不是在它上面。任何帮助将不胜感激。
答案 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重叠出现。你可以做同样的事情,但把你的图像放在画布里。