0

オブジェクトを にバインドできません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; ターゲット要素は 'ボタン' (Name=''); ターゲット プロパティは 'NoTarget' (タイプ 'Object') です

4

1 に答える 1

0

解決策を見つけました

 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)
            {
                // 
            }
        }
于 2013-04-11T18:25:16.730 に答える