TabControl:第一个TabItem静态,从代码隐藏休息

时间:2015-08-18 16:48:51

标签: c# wpf xaml

我有AccountSid - #### ApplicationSid - #### Caller - client:Anonymous CallStatus - ringing Called - To - CallSid - #### From - client:Anonymous Direction - inbound ApiVersion - 2010-04-01 ,其中包含UserControl TabControl将有1到n TabControl,即:第一个TabItem将始终存在,其内容对于我的UserControl的每个实例都是相同的,但其余的TabItems应该来自我的代码-behind因为我必须首先依赖于某些属性来构造它们。

我的第一次尝试包括

TabItems

其中<UserControl x:Class="MyNS.MyControl" xmlns:local="MyNS" and the whole rest of the declarations> <Grid> <TabControl> <TabControl.ItemsSource> <Binding Path="Tabs" RelativeSource="{RelativeSource AncestorType=local:MyControl}" /> </TabControl.ItemsSource> <TabControl/> </Grid> </UserControl> 在代码隐藏中声明为Tabs。它不是依赖或附属属性。这只是一个简单的领域 这很好用。无论我在代码隐藏中构建什么,都会显示出来。

但是,当我想手动定义第一个TabItem时,我会遇到问题:

public IList Tabs { get { return ... } }

始终显示第一个(静态)项目,但似乎绑定无法再解析<UserControl x:Class="MyNS.MyControl" xmlns:local="MyNS" and the whole rest of the declarations> <Grid> <TabControl> <TabControl.ItemsSource> <CompositeCollection> <CollectionContainer> <CollectionContainer.Collection> <x:Array Type="TabItem"> <TabItem Header="Test"/> </x:Array> </CollectionContainer.Collection> </CollectionContainer> <CollectionContainer> <CollectionContainer.Collection> <Binding Path="Tabs" RelativeSource="{RelativeSource AncestorType={x:Type local:MyControl}}"/> </CollectionContainer.Collection> </CollectionContainer> </CompositeCollection> </TabControl.ItemsSource> <TabControl/> </Grid> </UserControl> 的getter。

如何手动定义第一个标签项(在XAML中)并从代码隐藏中获取其余标签项?

1 个答案:

答案 0 :(得分:0)

使用{x:Reference}

<UserControl x:Class="MyNS.MyControl"
         xmlns:local="MyNS"
         x:Name="MyControl">

<!-- ... --->

<CollectionContainer Collection="{Binding Tabs, Source={x:Reference MyControl}}"/>