View Full Version : مشکل با اندازه کنترل هایی که به یک StackPanel اضافه می شوند
morteza271
سه شنبه 22 فروردین 1391, 12:57 عصر
سلام دوستان.
من یه StackPanel دارم و میخوام داخلش چندتا Label بذارم.
البته تعداد Labelها متغیره و عوض میشه.
حالا میخوام جوری این labelها داخل این StackPanel گذاشته بشن که همشون اندازشون یکسان باشه و با بزرگ و کوچیک شدم اندازه اون StackPanel اندازه Labelها هم عوض بشه.
البته بگم من این Labelها رو با کد ایجادشون میکنم و به فرزندان StackPanel اضافشون میکنم.چیکار کنم تا اندازه Labelها یکسان بشه و مجموعشون هم به اندازه StackPanel باشه.
با تشکر
مهدی فرزاد
سه شنبه 22 فروردین 1391, 13:08 عصر
سلام
باید خاصیت HorizontalAlignment و VerticalAlignment اون ها رو برابر Stretch قرار بدی و طول و عرض اونها باید Auto باشه (در حقیقت بهش مقدار ندی)
morteza271
سه شنبه 22 فروردین 1391, 13:16 عصر
نه دوست عزیز جواب نداد.
ببینین این کد رو نوشتم ولی درست نشد و اندازش تغییری نکرد :
<Label Content="Label1" Name="label1" Background="Red" VerticalAlignment="Stretch" Height="Auto" HorizontalAlignment="Stretch" Width="Auto" />
من این کد رو واسه یه Label داخل یه StackPanel نوشتم ولی همین یه Label هم Fill نشد!!!
دوستان خواهشا کمک کنید.
مهدی فرزاد
سه شنبه 22 فروردین 1391, 13:33 عصر
نه دوست عزیز جواب نداد.
ببینین این کد رو نوشتم ولی درست نشد و اندازش تغییری نکرد :
<Label Content="Label1" Name="label1" Background="Red" VerticalAlignment="Stretch" Height="Auto" HorizontalAlignment="Stretch" Width="Auto" />
من این کد رو واسه یه Label داخل یه StackPanel نوشتم ولی همین یه Label هم Fill نشد!!!
دوستان خواهشا کمک کنید.
اگر منظور شما اینه که لیبل تمام پنل رو بگیره !!! StackPanel این خاصیت رو نداره باید از DockPanel استفاده کنی و خاصیت LastChildFill اون رو برابر True قرار بدید85535http://barnamenevis.org/images/misc/pencil.png
morteza271
سه شنبه 22 فروردین 1391, 13:42 عصر
آره میخوام چندتا لیبل رو داخل یه StackPanel اضافه کنم.
خب برای DockPanel هم نوشتم ولی فایده نداشت.
ببینین این کدمه :
for (int i = 0; i < (MaxTime - MinTime) + 1; i++)
{
Label lblText = new Label();
lblText.Content = (Min++).ToString();
lblText.Width = double.NaN;
lblText.Height = double.NaN;
lblText.HorizontalAlignment = HorizontalAlignment.Center;
lblText.VerticalAlignment = VerticalAlignment.Stretch;
lblText.Style = Resources["LabelStyle"] as Style;
lblText.HorizontalContentAlignment = HorizontalAlignment.Center;
Dock.Children.Add(lblText);
}
توی یه حلقه لیبل ها رو ایجاد میکنم و به یه DockPanel که اسمش Dock هست اضافشون میکنم ولی درست نمیشه.
ببینید اینطوری شده :
اینم عکسش :
http://img4up.com/up2/38376579198812763060.jpg
میخوام اندازه لیبل ها که داخلشون عدد نوشتس برابر باشه و مجموع همشون برابر با کل اندازه DockPanel باشه.
کمک کنید...
مهدی فرزاد
سه شنبه 22 فروردین 1391, 14:11 عصر
سلام
ببین این بکارت میاد؟
morteza271
چهارشنبه 23 فروردین 1391, 11:50 صبح
ممنونم دوست عزیز بابت وقتی که گذاشتین ولی با گرید مشکلم حل شد.
اینم کدش :
for (int i = 0; i < (MaxTime - MinTime) + 1; i++)
{
grdLabels.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
Label lblText = new Label();
lblText.Content = (Min++).ToString();
lblText.HorizontalAlignment = HorizontalAlignment.Stretch;
lblText.VerticalAlignment = VerticalAlignment.Stretch;
lblText.Style = Resources["LabelStyle"] as Style;
lblText.HorizontalContentAlignment = HorizontalAlignment.Center;
Grid.SetColumn(lblText, i);
grdLabels.Children.Add(lblText);
}
خیلی لطف کردین.با تشکر
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.