Я создал пользовательский элемент управления. Я хочу связать это с Tabcontrol. При нажатии кнопки добавления динамически добавляет пользовательский контроль в DataTemplate. Моя проблема заключается в том, что всякий раз, когда редактирование в одном пользовательском элементе управления затрагивает все вкладки. как это можно решить? Есть ли способ создать новый экземпляр для DataTemplate DataType?
<UserControl.Resources>
<DataTemplate DataType="{x:Type local:VMTabItems}">
<local:TabContent/>
</DataTemplate>
</UserControl.Resources>
<TabControl Name="Tab_setting" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding tabItems}" Background="White">
<TabControl.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Header}"/>
<CheckBox Margin="10 0 0 0" IsChecked="{Binding isactive,Mode=TwoWay}" x:Name="chkbx" Checked="Chkbx_Checked" Unchecked="Chkbx_Unchecked"/>
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
private void Btn_addtabulation_Click(object sender, RoutedEventArgs e)
{
tbbinding.addItem();
}
public class TabBinding
{
public ObservableCollection<VMTabItems> tabItems { get; set; }
private VMTabItems _tabItem;
EditTabulation tab;
public TabBinding()
{
tabItems = new ObservableCollection<VMTabItems>();
}
public void addItem()
{
_tabItem = new VMTabItems();
int count = tabItems.Count + 1;
_tabItem.Header = "TabHeader " + count.ToString();
_tabItem.isactive = true;
this.tabItems.Add(_tabItem);
ICollectionView collectionView1 = CollectionViewSource.GetDefaultView(this.tabItems);
if (collectionView1 != null)
{
collectionView1.MoveCurrentTo(_tabItem);
}
}
}
public class VMTabItems: INotifyPropertyChanged
{
public string header { get; set; }
public bool isactive { get; set; }
public string Header { get; set; }
}