如何在 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>
设为 tbMain
的 ItemsSource
。
在这种情况下,如果您想将一些 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,并将侧边栏值与绑定选项卡的 属性 绑定。
在边栏菜单(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>
设为 tbMain
的 ItemsSource
。
在这种情况下,如果您想将一些 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,并将侧边栏值与绑定选项卡的 属性 绑定。