Как создать новый экземпляр для сгенерированного Dynami c usercontrol в шаблоне данных - PullRequest
0 голосов
/ 04 февраля 2020

Я создал пользовательский элемент управления. Я хочу связать это с 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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...