如何在 TabControl ItemTemplate 中绑定 TextBlock 文本?

How to binding TextBlock text in TabControl ItemTemplate?

在边栏菜单(RTL)中,当我点击哪个时,TabItem 添加到 tbMain。我的问题是如何使用 Binding?

TabItem header 和 TextBlock 中显示边栏单击的文本

这里是图片,XAML 和 CodeBehind。

XAML:

<TabControl x:Name="tbMain" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="6" Grid.RowSpan="5" Margin="0">
    <TabControl.ItemTemplate>
       <DataTemplate>
          <TextBlock Text="{Binding Text}" VerticalAlignment="Center" Foreground="#000000"/>
       </DataTemplate>
    </TabControl.ItemTemplate>

代码隐藏:

public WinFinance() {
   
      InitializeComponent();

      var definitionsMenu = new List<MenuSubItems>();
      definitionsMenu.Add(new MenuSubItems("area", new ucrArea()));
      definitionsMenu.Add(new MenuSubItems("client", new ucrClient()));
      definitionsMenu.Add(new MenuSubItems("cash" , new ucrCash()));
      
      tbMain.Items.Add(new ucrMainControl());
   }

首先,我假设您在未上传的代码部分中以某种方式将 List<MenuSubItems> 设为 tbMainItemsSource

在这种情况下,如果您想将一些 string 属性("area", "client", "cash"...) 作为 Header TabItems, 你可以使用 Style 像:

<TabControl x:Name="tbMain" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="6" Grid.RowSpan="5" Margin="0">
            <TabControl.ItemContainerStyle>
                <Style TargetType="TabItem">
                    <Setter Property="Header" Value="{Binding MenuSubHeader}"/>
                </Style>
            </TabControl.ItemContainerStyle>
    .......

然后就可以了。

编辑:这是我的代码隐藏和 MenuSubItems class 我写的。我对您的项目一无所知,所以我写信只是为了展示它是如何工作的。

public MainWindow()
{
    InitializeComponent();
    var definitionsMenu = new List<MenuSubItems>();
    definitionsMenu.Add(new MenuSubItems("area", new object()));
    definitionsMenu.Add(new MenuSubItems("client", new object()));
    definitionsMenu.Add(new MenuSubItems("cash", new object()));

    tbMain.ItemsSource = definitionsMenu;
}
public class MenuSubItems
{
    public string MenuSubHeader { get; set; }
    public object Content { get; set; }

    public MenuSubItems(string key, object value)
    {
        MenuSubHeader = key;
        Content = value;
    }
}

要实现您 XAML 的书写方式,您必须拥有具有 属性 命名文本的项目(此外,如果您希望它动态更新自身,请实施通知属性)。 最好的方法是使用您需要的数据创建一个 ViewModel,并将侧边栏值与绑定选项卡的 属性 绑定。