将 TextBlock 的文本绑定到 WPF 中的 TabControl 项

发布于 2024-11-04 18:47:49 字数 461 浏览 3 评论 0原文

我有一个带有选项卡控件的 WPF 窗口,并且我在 XAML 文件中定义 TabItem,例如:

<TabControl>
    <TabItem Name="tab1" Tag="Transactions"/>
    <TabItem Name="tab2" Tag="Promotions" />
    ...
</TabControl>

在屏幕的其他位置,我有一个文本块,我想用它来显示所选选项卡的 Tag 值。当屏幕最初加载时,只要选择“交易”选项卡,它就可以工作,但当选择不同的选项卡时,它是空白的。为什么会这样,如何让它显示任何选定选项卡的标签?这是文本块:

<TextBlock Text="{Binding ElementName=tabControl1, Path=SelectedItem.Tag}"/>

I have a WPF window with a tab control, and I'm defining the TabItems in the XAML file, like:

<TabControl>
    <TabItem Name="tab1" Tag="Transactions"/>
    <TabItem Name="tab2" Tag="Promotions" />
    ...
</TabControl>

Elsewhere on the screen I have a textblock which I want to use to display the Tag value of the selected tab. It works when the screen is initially loaded, and whenever the "transactions" tab is selected, but when a different tab is selected, it's blank. Why is that, and how can I make it display the tag of any selected tab? Here is the TextBlock:

<TextBlock Text="{Binding ElementName=tabControl1, Path=SelectedItem.Tag}"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自控 2024-11-11 18:47:49

这对我来说是预期的。 (您确实设置了 TabControl 的名称,对吧?)

请注意,如果 TabControl 是通过 ItemsSource 填充的,则与示例代码不同,SelectedItem 将不包含 TabItem,而是包含创建 TabItem 的数据对象,因此绑定路径 <代码>SelectedItem.Tag 不起作用。

使用的代码:

<!-- Both controls enclosed in a Stackpanel -->
<TabControl Name="tabControl1">
    <TabItem Name="tab1" Tag="Transactions"/>
    <TabItem Name="tab2" Tag="Promotions" />
</TabControl>
<TextBlock Text="{Binding ElementName=tabControl1, Path=SelectedItem.Tag}"/>

选项卡标题显然是空的,但它们是可选择的。

This works as expected for me. (You did set the name of the TabControl, right?)

Note that if the TabControl is populated via ItemsSource unlike your example code the SelectedItem will not contain the TabItem but the data-object from which the TabItem is created, so the binding path SelectedItem.Tag does not work.

Code used:

<!-- Both controls enclosed in a Stackpanel -->
<TabControl Name="tabControl1">
    <TabItem Name="tab1" Tag="Transactions"/>
    <TabItem Name="tab2" Tag="Promotions" />
</TabControl>
<TextBlock Text="{Binding ElementName=tabControl1, Path=SelectedItem.Tag}"/>

The tab headers are obviously going to be empty but they are selectable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文