Propriedades redimensionamento XAML
Pergunta
Existe uma maneira de ter propriedades XAML escala junto com o tamanho dos UIElements a que pertencem?
Em essência, eu tenho um modelo de controle que eu criei muito grande para a sua utilização / principalmente porque eu quero usar o mesmo controle com tamanhos diferentes. O problema é que eu posso definir o tamanho do controle para Auto (no ControlTemplate), no entanto as propriedades dos elementos do modelo intrisic não são redimensionadas: restos eg StrokeThickness em 10, quando deveria se tornar 1.
Ele funciona muito bem quando eu aplicar um ScaleTransform no modelo, mas que resulta em um controle que é muito pequeno quando ele é realmente usado: a largura / altura = Auto redimensiona o controle para o tamanho adequado e depois o ScaleTransform é aplicada. Então, eu estou coisas com um tipo de controle não-escalonáveis.
Eu sou um pouco novo para WPF, então não pode ser uma maneira simples de fazer isso ...
Solução
Pode-se tentar ligar a largura e a altura do controlo no interior do molde para a largura e altura, respectivamente, do controlo modelada no tempo de execução. Algo como:
<Button>
<Button.Template>
<ControlTemplate TargetType={x:Type Button}>
<Border Width="{TemplateBinding Property=ActualWidth}"
Height="{TemplateBinding Property=ActualHeight}">
<ContentPresenter />
</Border>
</ControlTemplate>
</Button.Template>
</Button>
Note-se que as fontes de ligação são o
Outras dicas
Sua descrição é um pouco vago, mas parece que você vai querer ter um ViewBox com o conjunto de estiramento para Uniform como o elemento raiz do seu controle.
Pena que você não pode criar um modelo de controle para um StackPanel, DockPanel, Grelha, ou qualquer outro recipiente.