Изменение размера свойств XAML - PullRequest
2 голосов
/ 14 октября 2008

Есть ли способ масштабировать свойства XAML вместе с размером элементов, к которым они принадлежат?

По сути, у меня есть шаблон элемента управления, который я создал слишком большим для его использования / главным образом потому, что я хочу использовать один и тот же элемент управления с разными размерами. Проблема в том, что я могу установить для размера элемента управления значение Auto (в ControlTemplate), однако свойства элементов шаблона не изменяются: например, StrokeThickness остается равным 10, а должен равняться 1.

Это прекрасно работает, когда я применяю ScaleTransform к шаблону, но это приводит к тому, что элемент управления слишком мал, когда он фактически используется: width / height = Auto изменяет размер элемента управления до нужного размера и затем применяется масштабное преобразование. Так что я с каким-то не поддающимся проверке контролем.

Я немного новичок в WPF, так что может быть простой способ сделать это ...

Ответы [ 3 ]

4 голосов
/ 15 октября 2008

Ваше описание немного расплывчато, но, похоже, вы захотите, чтобы ViewBox с Stretch был установлен на Uniform в качестве корневого элемента вашего элемента управления.

1 голос
/ 14 октября 2008

Вы можете попытаться привязать ширину и высоту элемента управления внутри шаблона к ширине и высоте шаблонного элемента управления во время выполнения. Что-то вроде:

<Button>
    <Button.Template>
        <ControlTemplate TargetType={x:Type Button}>
            <Border Width="{TemplateBinding Property=ActualWidth}"
                    Height="{TemplateBinding Property=ActualHeight}">
                <ContentPresenter />
             </Border>
         </ControlTemplate>
    </Button.Template>
</Button>

Обратите внимание, что источниками привязки являются свойства FrameworkElement.ActualWidth и FrameworkElement.ActualHeight шаблонного элемента управления. Эти свойства содержат ширину и высоту элемента управления после его визуализации, которые могут отличаться от значений, указанных в свойствах Ширина и Высота . Это связано с тем, что значения в конечном итоге вычисляются во время выполнения с учетом размера любых родительских элементов управления в визуальном дереве.

0 голосов
/ 19 ноября 2008

Жаль, что вы не можете создать шаблон элемента управления для StackPanel, DockPanel, Grid или любого другого контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...