C# 如何将TabItem的标题与标题的TabItem DataTemplate中的文本绑定?

C# 如何将TabItem的标题与标题的TabItem DataTemplate中的文本绑定?,c#,wpf,binding,tabs,tabcontrol,C#,Wpf,Binding,Tabs,Tabcontrol,我在App.xaml文件中为我的TabItems创建了这个模板,这样我就可以为我的TabItem的标题使用自定义样式 <Style x:Key="MyTabItemHeader" TargetType="{x:Type TabItem}"> <Setter Property="HeaderTemplate"> <Setter.Value>

我在App.xaml文件中为我的TabItems创建了这个模板,这样我就可以为我的TabItem的标题使用自定义样式

<Style x:Key="MyTabItemHeader" TargetType="{x:Type TabItem}">
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate DataType="{x:Type TabItem}">

                    <Border BorderBrush="Gray" CornerRadius="6" Background="LightGray" BorderThickness="0.5" Padding="1" Margin="2,4,2,4">
                        
                        <StackPanel Orientation="Horizontal" Height="28" MinWidth="60" MinHeight="20" >
                            
                            <fa:FontAwesome Name="ItemIconXaml" FontSize="22" Margin="10,0" Foreground="#0C0239"  VerticalAlignment="Center"/>
                            <TextBlock Text="{Binding Header}" Name="ItemNamexaml" FontSize="20" VerticalAlignment="Center" Foreground="#0C0239" FontFamily="Segoe Script"/>
                            <fa:FontAwesome Icon="Close" FontSize="18" Margin="10,0" VerticalAlignment="Center" Foreground="#CCA09F9F" HorizontalAlignment="Right" MouseDown="FontAwesome_MouseDown"/>
                                    
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

在窗口的代码隐藏中,负责显示TabControl及其tabItems。所以我动态地将TabItems添加到TabControl

public partial class Accueil : Window
{
    public Accueil()
    {
        InitializeComponent();

        // Definition des contents des Tabitems

        AjouterPatientTabItem.Content = ajouterPatientUserControl;
        FacturesDuJourTabItem.Content = facturesDuJourUserControl;
        MainHomeTabItem.Content = mainHomeUserControl;
        RegistreTabItem.Content = registreUserControl;
        ParamètresTabItem.Content = paramètresUserControl;

        // Attribution des names des TabItem
        
        //Ajouter Patient TabItem
        AjouterPatientTabItem.Header = "Nouveau patient";
     //   AjouterPatientTabItem.Style = (Style)Application.Current.Resources["MyTabItemHeader"];
        

        //Facture du patient TabItem
        FacturesDuJourTabItem.Header = "Factures du jour";
      //  FacturesDuJourTabItem.Style = (Style)Application.Current.Resources["MyTabItemHeader"];

        //MainHome 
        MainHomeTabItem.Header = "Accueil";
      //  MainHomeTabItem.Style = (Style)Application.Current.Resources["MyTabItemHeader"];

        //Registre
        RegistreTabItem.Header = "Registre";
           
      //  RegistreTabItem.Style = (Style)Application.Current.Resources["MyTabItemHeader"];
        
        //Paramêtres 
        ParamètresTabItem.Header = "Paramètres";
        //  ParamètresTabItem.Style = (Style)Application.Current.Resources["MyTabItemHeader"];



        //

     //   TabControlItems.ItemContainerStyle = (Style)Application.Current.Resources["TabItemStyle"];
        TabControlItems.ItemContainerStyle = (Style)Application.Current.Resources["MyTabItemHeader"];

        displayedItems.Add(MainHomeTabItem);

        this.TabControlItems.ItemsSource = displayedItems;    
    }

    private ObservableCollection<TabItem> displayedItems = new ObservableCollection<TabItem>();

    public ObservableCollection<TabItem> DisplayedItems
    {
        get { return displayedItems; }
        set { displayedItems = value; }
    }

    //Instanciation des Usercontrols 

    public Home ajouterPatientUserControl = new Home("Accueil", "Home");
    public FacturesDuJour facturesDuJourUserControl = new FacturesDuJour();
    public mainHome mainHomeUserControl = new mainHome();
    public Paramètres paramètresUserControl = new Paramètres();
    public Registre registreUserControl = new Registre();

    // Instanciation des Tabs items 

    public TabItem AjouterPatientTabItem = new TabItem();
    public TabItem FacturesDuJourTabItem = new TabItem();
    public TabItem MainHomeTabItem = new TabItem();
    public TabItem ParamètresTabItem = new TabItem();

    public TabItem RegistreTabItem = new TabItem();

    private void AccueilBtn_Click(object sender, RoutedEventArgs e)
    {
        // MainHomeTabItem.IsSelected = true;

        if (!displayedItems.Contains(MainHomeTabItem))
        {
            displayedItems.Add(MainHomeTabItem);
            TabControlItems.SelectedItem = MainHomeTabItem;
        }
        else
        {
            TabControlItems.SelectedItem = MainHomeTabItem;
        }
    }

    private void FactureDuJourBtn_Click(object sender, RoutedEventArgs e )
    {
        // FactureDuJourTabItem.IsSelected = true;

        if (!displayedItems.Contains(FacturesDuJourTabItem))
        {
            displayedItems.Add(FacturesDuJourTabItem);
            TabControlItems.SelectedItem = FacturesDuJourTabItem;
        }
        else
        {
            TabControlItems.SelectedItem = FacturesDuJourTabItem;
        }          
    }

    private void QuitterBtn_Click(object sender, RoutedEventArgs e)
    {
        Window Quitter = new QuitterMessageBox();
        Quitter.ShowDialog();
    }

    private void AjouterNouveauPatientBtn_Click(object sender, RoutedEventArgs e)
    {
        // AccueilTabItem.IsSelected = true;

        if (!displayedItems.Contains(item: AjouterPatientTabItem))
        {
            displayedItems.Add(AjouterPatientTabItem);
            TabControlItems.SelectedItem = AjouterPatientTabItem;
        }
        else
        {
            TabControlItems.SelectedItem = AjouterPatientTabItem;
        }
    }

    private void RegistreBtn_Click(object sender, RoutedEventArgs e)
    {
        // RegistreTabItem.IsSelected = true;

        if (!displayedItems.Contains(item: RegistreTabItem))
        {
            displayedItems.Add(RegistreTabItem);
            TabControlItems.SelectedItem = RegistreTabItem;
        }
        else
        {
            TabControlItems.SelectedItem = RegistreTabItem;
        
        }
    }

    private void parametresBtn_Click(object sender, RoutedEventArgs e)
    {
        // ParamètresTabItem.IsSelected = true;

        if (!displayedItems.Contains(item: ParamètresTabItem))
        {
            displayedItems.Add(ParamètresTabItem);
            TabControlItems.SelectedItem = ParamètresTabItem;
        }
        else
        {
            TabControlItems.SelectedItem = ParamètresTabItem;
        }
    }

    private void Window_closing(object sender, CancelEventArgs e)
    {
        e.Cancel = true;
        Window Quitter = new QuitterMessageBox();

        Quitter.ShowDialog();

    }

    private void AccueilTabCloseTabBtn_MouseDown(object sender, MouseButtonEventArgs e)
    {   
        displayedItems.RemoveAt(TabControlItems.SelectedIndex);
    }
}
公共部分类累计:窗口
{
公开指控
{
初始化组件();
//定义des目录des选项卡项
AjouterPatientTabItem.Content=ajouterPatientUserControl;
FacturesDuJourTabItem.Content=facturesDuJourUserControl;
MainHomeTabItem.Content=mainHomeUserControl;
registeretabitem.Content=registreUserControl;
ParamètresTabItem.Content=ParamètresUserControl;
//属性des name des TabItem
//A外部患者选项卡项
AjouterPatientTabItem.Header=“新患者”;
//AjouterPatientTabItem.Style=(Style)Application.Current.Resources[“MyTabItemHeader”];
//病人标签的制作
FacturesDuJourTabItem.Header=“Factures du jour”;
//facturesDujourtBitem.Style=(Style)Application.Current.Resources[“MyTabItemHeader”];
//缅因州
MainHomeTabItem.Header=“Accueil”;
//MainHomeTabItem.Style=(Style)Application.Current.Resources[“MyTabItemHeader”];
//登记册
registeretabitem.Header=“Registre”;
//registeretabitem.Style=(Style)Application.Current.Resources[“MyTabItemHeader”];
//参数
ParamètresTabItem.Header=“Paramètres”;
//ParamètresTabItem.Style=(Style)Application.Current.Resources[“MyTabItemHeader”];
//
//TabControlItems.ItemContainerStyle=(Style)Application.Current.Resources[“TabItemStyle”];
TabControlItems.ItemContainerStyle=(Style)Application.Current.Resources[“MyTabItemHeader”];
displayedItems.Add(MainHomeTabItem);
this.TabControlItems.ItemsSource=displayedItems;
}
私有ObservableCollection displayedItems=新ObservableCollection();
公共可观测集合DisplayedItems
{
获取{return displayedItems;}
设置{displayedItems=value;}
}
//用户控件实例
公共主页ajouterPatientUserControl=新主页(“Accueil”、“主页”);
公共制造业制造业制造业控制=新制造业制造业();
public mainHome mainHomeUserControl=new mainHome();
public Paramètres ParamètresUserControl=新参数();
public Registre registreUserControl=新注册表();
//选项卡项实例
公共选项卡项AjouterPatientTabItem=新选项卡项();
公共选项卡项FacturesDuJourTabItem=新选项卡项();
public TabItem main hometabitem=new TabItem();
公共TabItem ParamètresTabItem=新TabItem();
public TabItem registeretabitem=new TabItem();
私有无效累计点击(对象发送方,路由目标)
{
//MainHomeTabItem.IsSelected=true;
如果(!displayedItems.Contains(MainHomeTabItem))
{
displayedItems.Add(MainHomeTabItem);
TabControlItems.SelectedItem=MainHomeTabItem;
}
其他的
{
TabControlItems.SelectedItem=MainHomeTabItem;
}
}
私有无效制造厂商Dujourbtn_点击(对象发送者,路由目标e)
{
//FactureDuJourTabItem.IsSelected=true;
如果(!displayedItems.Contains(facturesDujourtBitem))
{
displayedItems.Add(factoresdujourtabitem);
选项卡ControlItems.SelectedItem=FacturesDujourtBitem;
}
其他的
{
选项卡ControlItems.SelectedItem=FacturesDujourtBitem;
}          
}
私有无效退出Tnu单击(对象发送方,路由目标)
{
窗口退出器=新建退出消息框();
ShowDialog();
}
私有void ajournouveaupatientbtn_单击(对象发送方,路由目标)
{
//accultabitem.IsSelected=true;
如果(!displayedItems.Contains(项:AjouterPatientTabItem))
{
displayedItems.Add(AjouterPatientTabItem);
TabControlItems.SelectedItem=AjouterPatientTabItem;
}
其他的
{
TabControlItems.SelectedItem=AjouterPatientTabItem;
}
}
私有无效注册表单击(对象发送方,路由目标)
{
//registeretabitem.IsSelected=true;
如果(!displayedItems.Contains(项:registeretabitem))
{
displayedItems.Add(registeretabitem);
TabControlItems.SelectedItem=RegisterBitItem;
}
其他的
{
TabControlItems.SelectedItem=RegisterBitItem;
}
}
私有无效参数单击(对象发送方,路由目标)
{
//ParamètresTabItem.IsSelected=true;
如果(!displayedItems.Contains(项:ParamètresTabItem))
{
displayedItems.Add(ParamètresTabItem);
TabControlItems.SelectedItem=ParamètresTabItem;
}
其他的
{
TabControlItems.SelectedItem=ParamètresTabItem;
}
}
私有无效窗口\u关闭(对象发送方,取消事件参数)
{
e、 取消=真;
窗口退出器=新建退出消息框();
ShowDialog();
}
私有void accultabclosetabbtn_MouseDown(对象发送器,鼠标按钮ventargs e)
{   
displayedItems.RemoveAt(选项卡控件项
<TabControl x:Name="TabControlItems" ItemsSource="{Binding displayedItems}">
                    

 </TabControl>
public Accueil()
{
  InitializeComponent();
  this.DataContext = this;
}
<TabControl ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=Accueil}, Path=displayedItems}" />
<TextBlock Text="{Binding}" Name="ItemNamexaml"
           FontSize="20" VerticalAlignment="Center" Foreground="#0C0239" FontFamily="Segoe Script"/>