WPF: можно ли адаптировать размер пути к размеру макета, но все же растянуть его? - PullRequest
3 голосов
/ 14 ноября 2010

Я пытаюсь стилизовать заголовок TabItem, используя путь для определения формы заголовка.

Я застрял в проблеме, которую не могу решить:

Если я установлю свойство Path Stretch на «None», оно не будет масштабироваться, если текст в моем заголовке TabItem будет длинным.

Если я установлю свойство path Stretch на «Fill», оно растянетсянастолько, что каждый заголовок TabItem будет иметь ту же ширину, что и TabControl - что означает только один очень широкий заголовок TabItem на строку ...

Знаете ли вы способ растянуть путь к макету (в зависимости отСодержимое TabItemHeader), но не более того?

Мне было бы очень приятно, если бы кто-то мог мне помочь в этом ... Это раздражает, пока я ищу решение.

Спасибо:-)

Ответы [ 2 ]

5 голосов
/ 14 ноября 2010

Сложно, когда вы не добавляете пример кода, а говорите, что ваш шаблон заголовка выглядит так, как показано ниже, тогда вы можете привязать ширину пути к фактической ширине текстового блока.

<TabItem.HeaderTemplate>
    <DataTemplate>
        <Border x:Name="grid">
            <Grid>
                <Path Data="..."
                      Stretch="Fill"
                      Width="{Binding ElementName=grid, Path=ActualWidth}" />
                <TextBlock Name="textBlock"
                           Margin="4"
                           FontSize="15"
                           Text="{Binding}"/>                                
            </Grid>
        </Border>
    </DataTemplate>
</TabItem.HeaderTemplate>
1 голос
/ 22 марта 2012

Но помните о производительности рендеринга! Привязка к ActualWidth и ActualHeight приведет к ошибкам связывания, если пользовательский интерфейс не был обработан внутренне А ошибки привязки стоят дорого ... Лучший способ избежать этого - настроить привязку в коде при вызове SizeChanged. Это первый момент после измерения и определения размеров.

...