![](/img/trans.png)
[英]How to get the TabItems in a TabControl that has it's ItemsSource bound to a list?
[英]DataTemplate Based on Value of Bound Property in ItemsSource of TabControl
好。 所以,我有一個TabControl
在我XAML對象,其具有ItemsSource
的值ItemsSource={Binding OpenTabs}
其中OpenTabs
是一個ObservableCollection
類型的ClosableTab
( public ObservableCollection<ClosableTab> OpenTabs { get; set; }
其延伸TabItem
。 我從這里找到ClosableTab
,然后根據自己的需要調整了它的視圖。
最初,我添加了一個屬性(抱歉,這里的名稱不正確) isProperty
。 這是針對房地產計划的。 然后在我的xaml中,我有以下幾行:
<DataTemplate x:Key="PropertyTemplate">
<Grid>
<TextBlock Text="{Binding address}"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="TennantTemplate">
<Grid>
<TextBlock Text="{Binding name}"/>
</Grid>
</DataTemplate>
//... That's in <Windows.Resources>
<TabControl ItemsSource="{Binding OpenTabs}" Grid.Column="1" x:Name="Tabs">
<TabControl.Resources>
<DataTemplate x:Key="DefaultTab">
<ContentControl>
<ContentControl.Triggers>
<DataTrigger Binding="{Binding isProperty}" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource PropertyTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding isProperty}" Value="False">
<Setter Property="ContentTemplate" Value="{StaticResource TennantTemplate}" />
</DataTrigger>
</ContentControl.Triggers>
</ContentControl>
</DataTemplate>
</TabControl.Resources>
</TabControl>
我做了一些研究,發現這是我需要做的,如果我想有一定DataTemplate
依賴於財產ClosableTab
稱為isProperty
。
它沒有給我我想要的東西。 有人可以告訴我我在做什么錯嗎? 告訴我該怎么辦? 和/或可能給我另一種方法? 我想不出需要更改什么才能獲得所需的功能。 提前致謝。
如果要在“資源”部分下定義DataTemplate
,則需要在DataTemplate
上設置DataType
使其自動應用於基礎數據對象。
<DataTemplate DataType="local:ClosableTab">
<ContentControl>
<ContentControl.Triggers>
<DataTrigger Binding="{Binding isProperty}" Value="True">
<Setter Property="ContentTemplate"
Value="{StaticResource PropertyTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding isProperty}" Value="False">
<Setter Property="ContentTemplate"
Value="{StaticResource TennantTemplate}" />
</DataTrigger>
</ContentControl.Triggers>
</ContentControl>
</DataTemplate>
確保申報local
在根級別到一個地方命名ClosableTab
聲明。
要么
而不是在資源中添加DataTemplate,而是將其顯式設置為TabControl的ItemTemplate
。
<TabControl>
<TabControl.ItemTemplate>
<DataTemplate x:Key="DefaultTab">
.....
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
UPDATE
理想的情況是只有一個DataTemplate
並將dataTrigger應用於TextBlock。
<TabControl ItemsSource="{Binding OpenTabs}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="{Binding address}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding isProperty}"
Value="False">
<Setter Property="Text" Value="{Binding name}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.