簡體   English   中英

無法將對象綁定到ListBox

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM