Olá Sandro,
Com xaml isso é facinho, vamos lá:
Xaml:
<TextBox x:Name="MyTextBox" TextChanged="TextBox_TextChanged_1" />
Code-behind:
private void TextBox_TextChanged_1(object sender, TextChangedEventArgs e) {
if(MyTextBox.Text.Length == 0) return;
Rect rect = MyTextBox.GetRectFromCharacterIndex(MyTextBox.Text.Length-1, true);
MyTextBox.Width = rect.Right + 80;
}
O GetRectFromCharacterIndex nos retorna um retângulo que envolve o último caractere do texto (lenght-1).
Depois é só setar o Width do TextBox com o valor do lado direito (mais longe) do retângulo, mais um valor para cobrir o tamanho do controle textblock. Você pode mudar esse "80" para ver que número fica melhor pra você, ou usar a mesma estratégia para calcular
o tamanho do textbox inteiro. Só tome cuidado com a recursão.
Espero que ajude, abc!
- André Carlucci - Way2 Technology - twitter/andrecarlucci - andrecarlucci.com