我尝试制作自定义列表框:
<ListBox x:Name="ImageList" ItemsSource="{Binding ImageControls}" Width="256" Height="256" Margin="256,0,0,0">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Top" Value="{Binding Top}" />
<Setter Property="Canvas.Left" Value="{Binding Left}" />
<Setter Property="ListBoxItem.Width" Value="128" />
<Setter Property="ListBoxItem.Height" Value="128" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding Source}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在我遇到绑定问题...... ImageList.ItemsSource
始终为空。
我有财产
public ObservableCollection<ImageControl> ImageControls;
它包含
的集合public class ImageControl
{
public WriteableBitmap Source { get; set; }
public int Top { get; set; }
public int Left { get; set; }
}
我需要看到这样的想法:
结果,在从代码中添加列表元素后,我希望接收像(带有源的图像)这样的项目:
<ListBoxItem Canvas.Left="0" Canvas.Top="0" Width="128" Height="128">
<Image x:Name="Image1"/>
</ListBoxItem>
<ListBoxItem Canvas.Left="128" Canvas.Top="0" Width="128" Height="128">
<Image x:Name="Image2"/>
</ListBoxItem>
<ListBoxItem Canvas.Left="0" Canvas.Top="128" Width="128" Height="128">
<Image x:Name="Image3"/>
</ListBoxItem>
<ListBoxItem Canvas.Left="128" Canvas.Top="128" Width="128" Height="128">
<Image x:Name="Image4" />
</ListBoxItem>
在代码中我添加了这样的图像:
ImageControls.Add(new ImageControl { Source = _bmp, Left = 0, Top = 0});
我做错了什么? 谢谢!
答案 0 :(得分:0)
似乎问题是您在 ImageControl类中声明源属性的方式。它使用 WriteableBitmap (我没有使用它)。但是,在您的XAML代码中,图像控件的源属性期望您指定一种字符串o Uri类型。 尝试将ImageControl类中的Source属性更改为字符串。
public class ImageControl
{
public string Source { get; set; }
public int Top { get; set; }
public int Left { get; set; }
}
希望这个帮助
答案 1 :(得分:0)
作品!我添加到我的控件构造函数:
ImageControls = new ObservableCollection<ImageControl>();
(It was before)InitializeComponent();
ImageList.ItemsSource = ImageControls;
即。我在init上添加了绑定源。
后来我只使用我的ImageControls
集合,如下所示:
ImageControls.Add(new ImageControl { Left = 128, Source = _bmp, Top = 0 });
列表框项目添加了!