C# Silverlight-与可观察集合绑定

C# Silverlight-与可观察集合绑定,c#,silverlight,data-binding,xaml,C#,Silverlight,Data Binding,Xaml,这无疑是一个新的问题,但我一直在寻找一个没有用的答案。我的设置很简单:我在XAML中定义了一个ListBox控件,在同一个类中定义了一个ObservableCollection。我正在将可观测集合绑定到列表框 在XAML中此列表框的层次结构中,我希望绑定到给定的MyClass对象,而不是MyClass对象的子属性 为了澄清,我有如下的XAML(我在代码中绑定了ObservableCollection): 当然,有一种方法可以获取ObservableCollection的对象,而不是被迫绑定到

这无疑是一个新的问题,但我一直在寻找一个没有用的答案。我的设置很简单:我在XAML中定义了一个ListBox控件,在同一个类中定义了一个
ObservableCollection
。我正在将
可观测集合
绑定到列表框

在XAML中此列表框的层次结构中,我希望绑定到给定的MyClass对象,而不是MyClass对象的子属性

为了澄清,我有如下的XAML(我在代码中绑定了ObservableCollection):



当然,有一种方法可以获取ObservableCollection的对象,而不是被迫绑定到其子属性之一。

如果要使用绑定对象本身,则不必指定路径:

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

除了在XAML中指定绑定路径外,还必须将集合绑定到列表框

C#

ObservableCollection myCollection=新的ObservableCollection();
MyListBox.DataContext=myCollection;
除非您在MyClass上重写了ToString方法,否则您使用的XAML不会特别有用。即使你说你不是,你确定你想绑定的不是MyClass的属性吗?我不明白为什么要直接绑定到集合对象

XAML



SpecialControl必须将对象的属性绑定到它的一些子元素。也许我这样做是不恰当的,但是如果我希望特殊控件是自治的,我看不到更好的方法。这对我来说没有任何意义。MyClassProperty如何将xaml链接到c代码?谢谢!您似乎已经了解了我的想法,并建议我直接绑定到DataContext。我从未想过,但这正是我想要做的。
<ListBox x:Name="MyListBox">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <MyControls:SpecialControl MyClassObj="{Binding}" />
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
<ListBox x:Name="MyListBox">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <MyControls:SpecialControl DataContext="{Binding}" />
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
ObservableCollection<MyClass> myCollection = new ObservableCollection<MyClass>();
MyListBox.DataContext = myCollection;
<ListBox x:Name="MyListBox">  
    <ListBox.ItemTemplate>    
        <DataTemplate>      
            <MyControls:SpecialControl MyClassObj="{Binding Path=MyClassProperty}" />    
        </DataTemplate>  
     </ListBox.ItemTemplate>
</ListBox>