Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
518 views
in Technique[技术] by (71.8m points)

c# - Silverlight - Binding with ObservableCollections

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 ObservableCollection<MyClass> in the same class. I am binding the ObservableCollection<MyClass> to the ListBox.

Within the hierarchy of this ListBox in XAML, I want to bind to a given MyClass object, not to a child property of the MyClass object.

To clarify, I have XAML that looks like the following (I bind the ObservableCollection in code):

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

Surely there is a way to get at the object of an ObservableCollection rather than being forced to bind to one of its child properties.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...