Parece que deveria ser fácil, mas estou perplexo. No WPF, eu gostaria de um TextBox que se estendesse até a largura de seu pai, mas apenas até a largura máxima. O problema é que quero que seja justificado à esquerda em seu pai. Para esticar, você deve usar HorizontalAlignment = "Stretch", mas o resultado é centralizado. Eu experimentei o HorizontalContentAlignment, mas ele não parece fazer nada.
Como faço para que esta caixa de texto azul cresça com o tamanho da janela, tenha uma largura máxima de 200 pixels e seja justificada à esquerda?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBox Background="Azure" Text="Hello" HorizontalAlignment="Stretch" MaxWidth="200" />
</StackPanel>
</Page>
Qual é o truque?
HorizontalAlignment="Stretch"
noContainer
elemento. (ps, eu sei que você fez essa pergunta há mais de 6 anos.)fonte
Ambas as respostas fornecidas funcionaram para o problema que declarei - Obrigado!
Em meu aplicativo real, porém, eu estava tentando restringir um painel dentro de um ScrollViewer e o método de Kent não lidou com isso muito bem por algum motivo que não me preocupei em rastrear. Basicamente, os controles poderiam se expandir além da configuração MaxWidth e anular minha intenção.
A técnica de Nir funcionou bem e não teve problemas com o ScrollViewer, embora haja uma coisa menor a ser observada. Você quer ter certeza de que as margens direita e esquerda no TextBox estão definidas como 0 ou elas ficarão no caminho. Eu também alterei a ligação para usar ViewportWidth em vez de ActualWidth para evitar problemas quando a barra de rolagem vertical apareceu.
fonte
Você pode usar isso para a largura do seu DataTemplate:
Certifique-se de que sua raiz DataTemplate tenha Margin = "0" (você pode usar algum painel como a raiz e definir a margem para os filhos dessa raiz)
fonte
Funcionalmente semelhante à resposta aceita, mas não exige que o elemento pai seja especificado:
fonte
Talvez eu ainda possa ajudar alguém que se depara com essa questão, porque esse é um problema muito antigo.
Eu também precisava disso e escrevi um comportamento para cuidar disso. Então aqui está o comportamento:
Então você pode usá-lo assim:
E, finalmente, esquecer de usar o
System.Windows.Interactivity
namespace para usar o comportamento.fonte
eu usaria
SharedSizeGroup
fonte
No meu caso, tive que colocar a caixa de texto em um painel de pilha para esticar a caixa de texto no lado esquerdo. Graças ao post anterior. Apenas como exemplo, eu defini uma cor de fundo para ver o que acontece quando o tamanho da janela está mudando.
fonte