[英]Cannot bind objects to ListBox
無法將對象綁定到ListBox
。 數據在那里,我想這是關於Binding
。
有什么線索嗎?
C#
public sealed class Package
{
public Guid ID { get; set; }
public string FileName { get; set; }
public List<PackageItem> PackageItems { set; get; }
}
public sealed class PackageItem
{
public Guid ID { get; set; }
public string FileName { get; set; }
public PackageItemTypes PackageItemType { get; set; }
}
private ObservableCollection<Package> availablePackages;
lbPackageList.Dispatcher.BeginInvoke((Action)(() =>
{
lbPackageList.DataContext = availablePackages;
}));
XAML
<ListBox Name="lbPackageList"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Path=Package.FileName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
錯誤
System.Windows.Data錯誤:3:找不到提供DataContext的元素。 BindingExpression :(無路徑); DataItem = null; 目標元素是'Button'(Name =''); 目標屬性為“ NoTarget”(類型“ Object”)
我找到了解決方案
lbPackageList.ItemsSource = availablePackages;
void engine_PackgesChanged(Models.Package newPackage)
{
Debug.WriteLine("There is a new package here " + newPackage.FileName);
try
{
lbPackageList.Dispatcher.BeginInvoke((Action)(() =>
{
if (availablePackages.Contains(newPackage) == false)
{
availablePackages.Add(newPackage);
}
}));
}
catch (Exception)
{
//
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.