wpf - wpf TabControl.ItemTemplate: 将 TabItem.Header.Text 设置为带有StringFormat的子绑定

  显示原文与译文双语对照的内容
142 5

如何将 TabItem.Header 设置为从几个字段中取出的绑定,每个绑定都以不同的大小显示。

我试图设置它的模板,但它创建了一个包含内部控件的rectangle,并且这个 rectangle 没有响应。

我已经尝试了以下操作:

<TabControl ItemsSource="{Binding}">
 <TabControl.ItemTemplate>
 <DataTemplate>
 <TabItem>
 <TabItem.Header>
 <MultiBinding StringFormat="{}{0}-{1}">
 <Binding Path="Title"/>
 <Binding Path="Category.Title"/>
 </MultiBinding>
 </TabItem.Header>
 <TabItem.Content>
 <TextBlock>
 Here is what is gonna be in the TabItem - not header
 </TextBlock>
 </TabItem.Content>
 </TabItem>
 </DataTemplate>
 </TabControl.ItemTemplate>
</TabControl>

但它并没有显示。

我也试图将它的设置为,但是,当单击文本并且未选中选项卡时,我将看到 rectangle的。

因此,我想将 TabItem.Header.Text 设置为 StringFormat MultiBinding,以总结我的问题。

时间:原作者:0个回答

133 4

TabControl包含一个ContentTemplate属性以及它从ItemsControl继承的ItemTemplate 。它使用for区分内容区域中显示的内容,同时为标题定义了模板。这里外,ItemSource中的每个项都将自动包装在一个tmodel中;它不需要重新创建。

而不是在tmodel内创建一个 sdl,使用rtc定义头内容,而是定义内容的datacontext 。

<TabControl ItemsSource="{Binding}">
 <TabControl.ItemTemplate>
 <DataTemplate>
 <TextBlock>
 <TextBlock.Text>
 <MultiBinding StringFormat="{}{0}--{1}">
 <Binding Path="Title"/>
 <Binding Path="Category.Title"/>
 </MultiBinding>
 </TextBlock.Text>
 </TextBlock>
 </DataTemplate>
 </TabControl.ItemTemplate>
 <TabControl.ContentTemplate>
 <DataTemplate>
 <TextBlock Text="{Binding MyContent}"/>
 </DataTemplate>
 </TabControl.ContentTemplate>
</TabControl>

在第一段中,你提到希望在标题的绑定部分设置不同的大小。如果你想要这样做,你将无法使用单个绑定或者多重绑定来设置文本以上面的结果。相反,你可以嵌套TextBlocks以实现不同格式的。

<TabControl.ItemTemplate>
 <DataTemplate>
 <TextBlock>
 <TextBlock Text="{Binding Title}"
 FontSize="12"/>
 <Run Text="--"/>
 <TextBlock Text="{Binding Category.Title}"
 FontSize="10"/>
 </TextBlock>
 </DataTemplate>
</TabControl.ItemTemplate>
原作者:
...