我有一個WPF應用程序正在數據庫中查找新圖像,如果出現問題,它會將圖像添加到列表中。當這個事件發生時,我希望它將圖像添加到StackPanel中。將圖像添加到WPF中的StackPanel中
首先,我試圖插入圖像,但得到了一個InvalidOperationException
說:「調用線程必須是STA,因爲許多UI組件需要這個。」並提出了:
public void Instance_GraphicChanged(object sender, PropertyChangedEventArgs e)
{
foreach (Model.Graphic item in Model.IncomingCall.Instance.Graphics)
{
if(!_strings.Contains(item.ImageId.ToString()))
{
Thread thread = new Thread(new ThreadStart(
delegate()
{
//sp_images StackPanel for Images
sp_images.Dispatcher.Invoke(
DispatcherPriority.Normal, new Action(
delegate()
{
Image img = new Image();
img.Source = item.ImageObj; //ImageObj returns a BitmapImage
sp_images.Children.Add(img);
}
));
}
));
_strings.Add(item.ImageId.ToString());
}
}
}
這不拋出任何類型的異常,但實際上什麼也沒有發生......
你不需要創建一個新的線程來調用'Dispatcher'。相反,您應該使用委託調用'sp_images.Dispatcher.BeginInvoke(...)'。另外,你有沒有嘗試將圖像生成綁定到'ItemsControl'?您可以使用模板將其轉換爲'StackPanel',並且只使用包含在「ObservableCollection」中的'BitmapImage'對象。 –