TabControl. ItemTemplate: установите TabItem. Заголовок. Текст к MultiBinding с StringFormat

Переименование/перемещение файлов с суффиксами быстро:
cp /home/foo/realllylongname.cpp{,-old}

Это расширяется до:
cp /home/foo/realllylongname.cpp /home/foo/realllylongname.cpp-old

23
задан Cœur 15 August 2017 в 08:36
поделиться

1 ответ

TabControl содержит свойство ContentTemplate, а также ItemTemplate, которое он наследует от ItemsControl. Он использует ContentTemplate, чтобы различать, что отображается в области Content, и ItemTemplate, который определяет шаблон для заголовка. Кроме того, каждый элемент из вашего ItemSource будет автоматически заключен в TabItem; его не нужно воссоздавать в ItemTemplate, так как это попытается разместить TabItem внутри заголовка, как вы заметили.

Вместо повторного создания TabItem внутри ItemTemplate используйте ItemTemplate для определения вашего Содержимое заголовка и ContentTemplate для определения вашего содержимого.

<TabControl ItemsSource="{Binding}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <TextBlock.Text>
                    <MultiBinding StringFormat="{}{0}--{1}">
                        <Binding Path="Title" />
                        <Binding Path="Category.Title" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding MyContent}" />
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

В первом абзаце вы упомянули, что хотите установить разные размеры для связанных частей заголовка. Если вы действительно хотите это сделать, вы выиграли ' t иметь возможность использовать одиночный Binding или MultiBinding для установки текста, как это сделано выше. Вместо этого вы можете вкладывать TextBlocks, чтобы добиться этого с различным форматированием для каждого.

<TabControl.ItemTemplate>
    <DataTemplate>
        <TextBlock>
            <TextBlock Text="{Binding Title}"
                       FontSize="12" />
            <Run Text="--" />
            <TextBlock Text="{Binding Category.Title}"
                       FontSize="10" />
        </TextBlock>
    </DataTemplate>
</TabControl.ItemTemplate>
64
ответ дан 29 November 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: