我有一个连接问题。如何通过绑定填充ContentPresenter
我开始将我的tabs
与tabcontrol.ressources
连接起来,它可以显示每个标签的文本。 后来我想有一个滚动我TabItems
和它不工作,没有任何显示在标签......我甚至无法使用tabcontrol.ressources
了...
<DockPanel>
<Button Background="DarkGoldenrod" Height="Auto" Command="{Binding OpenFlyoutDataCommand}">
<StackPanel>
<materialDesign:PackIcon Kind="ArrowRightBoldCircleOutline" Width="30" Height="30"/>
</StackPanel>
</Button>
<TabControl ItemsSource="{Binding TabEDCWaferData, Mode=TwoWay}"
SelectedItem="{Binding SelectedTabEDCWaferData}">
<!-- Used to create a scroolbar for tabitems -->
<TabControl.Template>
<ControlTemplate TargetType="TabControl">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" >
<TabPanel Grid.Column="0" Grid.Row="0"
Margin="2,2,2,0" IsItemsHost="true"/>
</ScrollViewer>
<ContentPresenter ContentSource="..."/>
</Grid>
</ControlTemplate>
</TabControl.Template>
<!-- Contains the text in the tab item ! -->
<TabControl.Resources>
<DataTemplate DataType="TabItem">
<DockPanel>
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Content}" />
</DockPanel>
</DataTemplate>
</TabControl.Resources>
</TabControl>
</DockPanel>
这就是连接的集合TabItem
,我有一个功能可以将Items
绑定到另一个按钮上。
private ObservableCollection<TabItem> _TabEDCWaferData;
public ObservableCollection<TabItem> TabEDCWaferData
{
get { return _TabEDCWaferData; }
set
{
_TabEDCWaferData = value;
RaisePropertyChanged("TabEDCWaferData");
}
}
public void AddTabItem(string name)
{
TabItem tab = new TabItem();
tab.Header = name;
tab.Content = "Temporary content";
TabEDCWaferData.Add(tab);
}
我读到我必须使用ContentPresenter
,但我不知道该怎么绑定。我认为这不适用于TabItems
... 我只想按照我在Ressources
中通过使用ContentPresenter
来绑定它。
我希望我很清楚!谢谢
编辑:我试着在ContentPresenter
显示我添加到函数AddTabItem中的选定的项目标签内容。
也许TemplateBinding来的TabControl的内容属性? – Mathieu
等一下,你想用ContentPresenter来做什么?显示当前选择的选项卡项目? –
是的,确切!这是我试图解释的,显示当前选定的标签项目内容。 – Destunk