我有一个愚蠢的问题 - 我正在处理一个标签控件的事件(Selected Tab Changed),我想将窗口标题设置为标签标题。 选项卡标题是一个用户控件,包含三个文本块。
代码:
TabItem item = tabCtrl.SelectedItem as TabItem;
if (item.Header is TabHeader)
{
// the topTextBlock is not visible
// string topText = (item.Header as TabHeader).topTextBlock.Text;
}
问题是,当我将鼠标悬停在item.Header上或转到Locals窗口时,工具提示会显示所需的文本块,我可以看到它们的文本。那么如何从代码中访问它们呢?
(item.Header as TabHeader)
可以访问各种属性和方法(width,height,cliptobounds,contextMenu等)。
干杯!
答案 0 :(得分:1)
默认情况下,topTextBlock
(在XAML中从x:Name="topTextBlock"
生成)是私有的。您可以将其更改为公开生成,但您不应该这样做。您还应该避免通过FindName
查找字段。
披露公共财产
public partial class TabHeader : UserControl
{
public string TopText
{
get { return topTextBlock.Text; }
}
...
}
并在后面的代码中使用它
var topText = ((TabHeader)item.Header).TopText;
或绑定
Title="{Binding SelectedItem.Header.TopText, ElementName=tabCtrl}"