Я загружаю Textbox
и Button
в горизонтальный StackPanel
программно. Размер кнопки (который содержит только Image
) исправлен, но я не могу получить текстовое поле, чтобы заполнить доступную ширину его родителя. Это то, что код выглядит следующим образом:Связывание ширины TextBox с его фактическим шириной родительского контейнера
StackPanel parent = new StackPanel() {
Orientation = Orientation.Horizontal,
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Top,
};
TextBox textbox = new TextBox() {
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Top,
//MinWidth = 375,
};
Button btn = new Button() {
Content = new Image() {
MaxHeight = 40,
MaxWidth = 40,
MinHeight = 40,
MinWidth = 40,
Margin = new Thickness(0),
Source = new BitmapImage(
new Uri("btnimage.png", UriKind.Relative)),
},
HorizontalAlignment = HorizontalAlignment.Right,
BorderBrush = new SolidColorBrush(Colors.Transparent),
Margin = new Thickness(0),
};
btn.Click += ((s, e) => OnBtnClicked(s, e, textbox));
parent.Children.Add(textbox);
parent.Children.Add(btn);
Если я раскомментировать параметр MinWidth
для текстового поля оно отображается как я хочу его, но я хотел бы, чтобы не указать ширину в явном виде. Я попытался добавление связывания следующим образом, но это не работает вообще (текстовое поле просто исчезает!)
Binding widthBinding = new Binding() {
Source = parent.ActualWidth,
};
passwdBox.SetBinding(TextBox.WidthProperty, widthBinding);
Спасибо за вашу помощь заранее!
Это похоже на то, что мне нужно, но я не могу найти DockPanel в Silverlight Toolkit для Windows Phone. Я просто попробовал переустановить его, чтобы убедиться, что у меня есть последняя версия, но все равно не повезло. – Praetorian
Следует проявлять осторожность при принятии решения об использовании компонентов инструментария. Это добавит общий размер Xap, который может быть важным фактором для WP7. Если единственная причина для добавления DLL инструментария - это получить эту функцию, нужно искать альтернативное решение без инструментария. – AnthonyWJones
Очень хороший момент, Энтони. Если вы еще не используете инструментарий Silverlight, я бы использовал Grid. Но наличие DockPanel чрезвычайно полезно для различных макетов. Вы можете почти всегда использовать Grid для таких макетов, но, как вы можете видеть в ответе Остина, макеты на основе грида могут стать довольно подробными. – Josh