WPF, TabItem Images

本文关键字:Images TabItem WPF | 更新日期: 2023-09-27 18:09:38

有TabControl,它绑定到数组,需要添加到TabItem不同的图标/图像。haml代码:

<Grid>
        <TabControl VirtualizingPanel.VirtualizationMode="Recycling" Style="{StaticResource TabControl}" 
         ItemsSource="{Binding Workspaces}" SelectedIndex="{Binding CurrentPage,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}">
        <TabControl.ItemContainerStyle>
            <Style BasedOn="{StaticResource TabItem}" TargetType="{x:Type TabItem}">
                <Setter Property="Header" Value="{Binding HeaderText}"/>
            </Style>
        </TabControl.ItemContainerStyle>
        <TabControl.ContentTemplate>
            <DataTemplate>
                <ContentPresenter Content="{Binding Content}" />
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl>
</Grid>

WPF, TabItem Images

你应该在TabControl中设置一个ItemTemplateSelector:

<TabControl VirtualizingPanel.VirtualizationMode="Recycling" Style="{StaticResource TabControl}" 
    ItemsSource="{Binding Workspaces}" SelectedIndex="{Binding CurrentPage,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
    ItemTemplateSelector="{StaticResource myItemDataTemplateSelector}" >

你的TemplateSelector应该是这样的:

public class MyItemDataTemplateSelector : DataTemplateSelector
{
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        FrameworkElement element = container as FrameworkElement;
        if (element != null && item != null && item is MyItem)
        {
            var myItem = item as MyItem;
            var window = Application.Current.MainWindow;
            switch (myItem.SpecialFeatures)
            {
                case SpecialFeatures.None:
                    return 
                        element.FindResource("Item_None_DataTemplate") 
                        as DataTemplate;
                case SpecialFeatures.Color:
                    return 
                        element.FindResource("Item_Color_DataTemplate") 
                        as DataTemplate;
            }
        }
        return null;
    }
}

参考:https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemtemplateselector (v = vs.110) . aspx