ViewModel cihazımda Model nesneleri koleksiyonu var. Bunlara bir TabControl bağlayabilmeyi ve Model Nesnelerinden bilgiyi ayıklamak için bir DataTemplate kullanabilmeyi isterim. Bunu yapmaya çalıştığımda, errormessage'ı alırım: Type Type nesnesine Object [Nesne] nesnesine nesne dönüştürülemedi. Koleksiyona bir Silverlight TabControl bağlama
Silverlight TabControl
kırık geçerli: çözüm arama biraz zaman geçirdikten sonra aşağıdaki buldum. Bir TabControl'ün davranışını taklit etmek için bir ListBox ve ContentControl bileşimini kullanın. (Means Ben bir TabControl gibi görünmek için ListBox derisini zorunda)TabControl PrepareContainerForItemOverride ve çözümü Converter yapmaktır geçersiz kılmaz. (Ben sonra Converter'da convertee türünü belirtmek gerekir, çünkü bu kadar iyi değil)
Herkes daha iyi bir çözüm biliyor?
XAML
<sdk:TabControl ItemsSource="{Binding Items, ElementName=MyControl}">
<sdk:TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</sdk:TabControl.ItemTemplate>
</sdk:TabControl>
C#
public ObservableCollection<Model> Items { get; set; }
public ViewModel()
Items = new ObservableCollection<Model>{
new Model { Name = "1"},
new Model { Name = "2"},
new Model { Name = "3"},
new Model { Name = "4"}
};
}
public class TabConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
List<TabSource> source = value as List<TabSource>;
if (source != null)
{
List<TabItem> result = new List<TabItem>();
foreach (TabSource tab in source)
{
result.Add(new TabItem()
{
Header = tab.Header,
Content = tab.Content
});
}
return result;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
blogdan alınan
düzgün çalışır
ObservableCollection sınıfı ile. http://vortexwolf.wordpress.com/2011/04/09/silverlight-tabcontrol-with-data-binding/ – vorrtex