(Опитвам се да науча WPF с помощта на уроци и документация и се опитвам да разработя потребителски интерфейс за моето пълно бекенд приложение, докато казвам. Чувал съм хора да казват, че кривата на обучение е доста стръмна. Но понякога се чудя дали какво Опитвам се да направя всъщност нещо, което е трудно да се направи в WPF, или ако е просто, но мисля в грешни термини, или ако не е нито едно от двете, е доста просто, но случайно не знам как.)
Ето моят текущ въпрос. Исках да щракна, че щракването върху част от моя потребителски интерфейс ще изведе „изскачащ прозорец“, където потребителят може да въведе повече информация. Бих искал изскачащ прозорец в стил „лайтбокс“, т.е. изскачащият прозорец е модален за страницата, затъмнява останалата част от страницата, за да стане център на вниманието и т.н. Те се виждат често на уеб сайтове.
Малко търсене ме доведе до WPF изскачащ контрол. Добавих го, сложих съдържанието си, зададох свойството IsOpen на True и -- скоро! Изскачащ прозорец. След това добавих невидим правоъгълник, който покрива целия ми прозорец, и го зададох на Visible, когато искам изскачащият ми прозорец да се отваря. Страхотен!
Така че сега исках да направя това динамично, защото понякога ще зареждам запис, който понякога ще трябва да отвори друга контрола (Потребителска контрола) в изскачащ прозорец, за да редактира информацията си. Така че си създадох метод, наречен OpenPopup. Но изглежда не мога да намеря начин да напиша този метод с помощта на WPF. В Windows Forms бих написал: (използвам VB.NET)
Sub ShowPopup (form as Form, ctrl as Control)
'Create 'rect' as new dark rectangle control
'Z-order it to the top
'form.Controls.Add 'rect'
'form.Controls.Add ctrl
'Z-order 'ctrl' to the top
'Center 'ctrl'
'Set focus to it
End Sub
Но с WPF срещам проблеми:
1) Не мога да го добавя към прозореца на WPF, защото вече има дете.
2) Ако това дете е Canvas, това не е много лошо. Мога да открия това и да го добавя към Canvas. Трябва да намеря някакъв начин да задам неговите свойства Left, Top и т.н. и Width и Height, тъй като те не изглеждат свойства на контролата Rectangle, а по-скоро разширени от обекта Canvas -- в XAML те се наричат Cavnas.Top и т.н., но Intellisense не ги показва, когато се опитвам да го използвам в код.
3) Но ако е StackPanel? Тогава моят правоъгълник просто ще бъде подреден под другите контроли! И не ги покрива! Има ли начин да се заобиколи това?
4) И ако прозорецът съдържа само една контрола и изобщо няма контрола на контейнер?
5) Мисля, че имаше повече проблеми, с които се сблъсках. Но да започнем с тези.
Благодаря ви предварително за помощта.