2009-11-24 4 views
0

Я хочу заполнить TreeView с помощью UserControls, но мне нужно, чтобы свойство Name отображалось, а не весь UserControl. Следующий код дает мне странные сбои, как только я что-то добавить к myUCs:Silverlight 3: Использование списка UserControls как ItemsSource для TreeView

C#:

var myUCs = new ObservableCollection<UserControl>(); 
MyTreeView.ItemsSource = myUCs; 

XAML:

<controls:TreeView x:Name="MyTreeView"> 
    <controls:TreeView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </controls:TreeView.ItemTemplate> 
</controls:TreeView> 

Кто-нибудь знает, как использовать список UserControls как ItemSource для TreeViews?

ответ

0

я нашел один не очень удобный обходной путь: вместо Список UserControls, использовать словарь, а также изменить код XAML, чтобы:

<controls:TreeView x:Name="MyTreeView"> 
    <controls:TreeView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Key.Name}"/> 
     </DataTemplate> 
    </controls:TreeView.ItemTemplate> 
</controls:TreeView> 
+0

В сочетании с ObservableDictionary это работает очень хорошо для меня. описана реализация ObservableDictionary: http://drwpf.com/blog/Home/tabid/36/EntryID/8/Default.aspx адаптация для Silverlight: http://blog.treehouseconsulting.co. ик/пост/2009/06/17/ObservableDictionary-в-Silverlight.aspx – eriksmith200

-1

Возможно, вам придется создать свой собственный класс, который расширяет UserControl и переопределяет метод ToString(), чтобы он возвращал свойство name.

+0

Я попытался создать переопределение для ToString(), удалили ItemTemplate из кода XAML, но метод ToString не вызывается. – eriksmith200

 Смежные вопросы

  • Нет связанных вопросов^_^