. İlk başlangıçta uygulama başlangıcında ciltleme işleri (dönüştürücü). Bağlanan koleksiyona yapılan Değişiklikler, Temizle() veya Ekle(), TabControl ... dönüştürücüsüne yansıtılmaz.Silverlight TabControl, koleksiyonun değiştiğinde güncellenemeyen ObservableCollection <string>'a bağlanmadı. Bir IValueConverter kullanarak bir ObservableCollection'a bağlı bir TabControl ile Silverlight 3 uygulaması
not: Bağlı ListBox, TabControl yokken bağlı koleksiyondaki değişiklikleri yansıtır.
Fikirler? bağlayıcı
/JHD
XAML ...
<UserControl.Resources>
<local:ViewModel x:Key="TheViewModel"/>
<local:TabConverter x:Key="TabConverter" />
</UserControl.Resources>
<StackPanel DataContext="{StaticResource TheViewModel}">
<ListBox ItemsSource="{Binding Classnames}" />
<controls:TabControl x:Name="TheTabControl"
ItemsSource="{Binding Classnames, Converter={StaticResource TabConverter}, ConverterParameter=SomeParameter}"/>
<Button Click="Button_Click" Content="Change ObservableCollection" />
</StackPanel>
ViewModel ...
namespace DatabindingSpike
{
public class ViewModel
{
private ObservableCollection<string> _classnames = new ObservableCollection<string>();
public ViewModel()
{
_classnames.Add("default 1 of 2");
_classnames.Add("default 2 of 2");
}
public ObservableCollection<string> Classnames
{
get { return _classnames; }
set { _classnames = value; }
}
}
}
(Şeyiyle)
dönüştürücü ...
namespace DatabindingSpike
{
public class TabConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var source = value as ObservableCollection<string>;
if (source == null)
return null;
var param = parameter as string;
if (string.IsNullOrEmpty(param) || param != "SomeParameter")
throw new NotImplementedException("Null or unknow parameter pasased to the tab converter");
var tabItems = new List<TabItem>();
foreach (string classname in source)
{
var tabItem = new TabItem
{
Header = classname,
Content = new Button {Content = classname}
};
tabItems.Add(tabItem);
}
return tabItems;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
olma ihtimali nedir? Modu açık bir şekilde ayarlamayı deneyeceğim. /jhd –
Açık Çığlık Modu = OneWay, neşe yok. CollectionChanged olayını kullanacağım ve daha iyi bir yol bulana kadar TabControl.ItemsSource'ı yeniden ayarlayacağım./jhd –
ObservableCollection sınıfıyla doğru çalışan genişletilmiş sekme denetimini oluşturdum. http://vortexwolf.wordpress.com/2011/04/09/silverlight-tabcontrol-with-data-binding/ – vorrtex