Silverlight - Binding with ObservableCollections

前端 未结 2 557
悲&欢浪女
悲&欢浪女 2020-12-21 19:17

This is no doubt a newbish question, but I have looked for an answer to no avail. My setup is simple: I have a ListBox control defined in XAML and an ObservableCollec

相关标签:
2条回答
  • 2020-12-21 19:35

    As well as specifying the binding path in your XAML you have to bind your collection to the ListBox.

    C#

    ObservableCollection<MyClass> myCollection = new ObservableCollection<MyClass>();
    MyListBox.DataContext = myCollection;
    

    The XAML you have used won't be particularly useful unless you have overriden the ToString method on MyClass. Even though you say you're not are you sure it's not a property of MyClass that you want to bind to? I can't see why you'd want to bind directly to a collection object.

    XAML

    <ListBox x:Name="MyListBox">  
        <ListBox.ItemTemplate>    
            <DataTemplate>      
                <MyControls:SpecialControl MyClassObj="{Binding Path=MyClassProperty}" />    
            </DataTemplate>  
         </ListBox.ItemTemplate>
    </ListBox>
    
    0 讨论(0)
  • 2020-12-21 19:48

    You do not have to specify a Path if you want to use the bound object itself:

    <ListBox x:Name="MyListBox">
      <ListBox.ItemTemplate>
        <DataTemplate>
          <MyControls:SpecialControl MyClassObj="{Binding}" />
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
    

    BTW: Instead of your custom property, you can use the DataContext property of your control to bind the control to the object:

    <ListBox x:Name="MyListBox">
      <ListBox.ItemTemplate>
        <DataTemplate>
          <MyControls:SpecialControl DataContext="{Binding}" />
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
    
    0 讨论(0)
提交回复
热议问题