【发布时间】:2020-09-15 12:19:39
【问题描述】:
我创建了一个 TabControl。在其中,我希望每个“页面”都有不同的样式。所以我试着把 ContentType 搞得一团糟。现在,如果我使用静态引用,它工作得很好,但我想做的是做一些动态的事情。所以我正在考虑在我给 tabcontrol (List_OpenPage.ItemSource = pages) 的类中插入一个字符串,比如 Home。
然后我将 ContentTemplate 设置为如下{StaticResource ResourceKey={Binding Style}} 其中 Style 是对 List 调用页面的引用。 (事实上,如果我调用 list.page 我应该得到一个像 home 或 test 这样的字符串)。
这个想法行不通..那么你知道如何让它工作吗?
<TabControl Name="List_OpenPage" BorderThickness="0" Style="{DynamicResource TabControlStyle1}" ContentTemplate="{StaticResource Home}">
<TabControl.Resources>
<SolidColorBrush x:Key="TabItem.Selected.Background" Color="LightGray"/>
<SolidColorBrush x:Key="TabItem.Selected.Border" Color="#ACACAC"/>
<Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}">
// Some ignorable styling \\
</Style>
</TabControl.Resources>
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" Margin="2" FontSize="13"/>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
-- 数据模板
<Window.Resources>
<DataTemplate x:Key="Home">
<ListView ItemsSource="{Binding Datas}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="Red">
</ListView>
</DataTemplate>
<DataTemplate x:Key="test">
<ListView ItemsSource="{Binding Datas}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="LightGray">
</ListView>
</DataTemplate>
</Window.Resources>
//
public class Page
{
public string Title { get; set; }
public string Style { get; set; } (will be home or test for this example)
public List<Result.Data> Datas { get; set; }
}
【问题讨论】: