kilka pytań odnośnie WPF

0

Witam,

Do tej pory zajmowałem się webmasteringiem (php-jQuery-html/css), teraz zainteresowałem się programowaniem w C#. Chciałem się dowiedzieć jak najlepiej uzyskać w WPF rzeczy, które znam ze wspomnianych technologii. Na przykład, gdy potrzebuję mieć kontrolę nad wartościami jakichś właściwości danych elementów, html/css nadaję tym elementom klasę, i potem do niej się odwołuję, przypisując te wartości. 1) Czy da się zrobić coś takiego w XAML? Kolejna sprawa: potrzebuję zrobić tabelę. O określonej liczbie wierszy, kolumn, z możliwością scalania komórek, dodawania obramowania etc. W komórkach powinny móc się znajdować każdego rodzaju kontrolki. 2) Jak to zrobić? 3) Jak ustawić kolor tekstu kontrolki w HTML lub RGB? 4) Czy tworzenie kontrolek w pętli podczas każdego uruchomienia programu spowoduje wolniejsze jego działanie, niż skopiowanie ileś razy kodu do edytora XAMLa?

Na razie tyle, z góry dziękuję za odpowiedzi

1

Cześć!
Generalnie XAML nie jest aż taki skomplikowany i pewnie da się zrobić rzeczy o których piszesz (a raczej na pewno) jednakże trzeba do niego troszeczkę cierpliwości bo potrafi zniechęcić na początku :-). Sugerowałbym Ci przejrzeć uważnie te linki:
http://dotnetslackers.com/articles/silverlight/WPFTutorial.aspx to taki step by step pierwszej aplikacji a tutaj już coś więcej: http://www.kirupa.com/blend_wpf/index.htm
Powinieneś sobie poradzić :).

Od siebie powiem Ci jeszcze tyle, że najlepiej jakbyś najpierw dobrze ogarnął C#, potem pobawił się troszeczkę z Windows Forms a na końcu WPF.
Piszesz, że jesteś dobry w jQuery i CSS - a czy wiedziałeś, że dzięki tym technologią też można tworzyć aplikacje komputerowe? Mam na myśli Windows 8 a konkretnie - Modern UI.
http://code.msdn.microsoft.com/windowsapps/site/search?f%5B0%5D.Type=ProgrammingLanguage&f%5B0%5D.Value=JavaScript&f%5B0%5D.Text=JavaScript jak masz ochotę to możesz sobie przejrzeć jakieś przykłady. Wygląda to w taki sposób, że elementy interfejsu piszesz w CSS natomiast logikę w JavaScript/TypeScript. Nie można pisać wtedy w C# o ile się nie mylę.

0

Dzięki wielkie za odpowiedź, przejrzę te linki. Owszem, XAML mnie trochę zniechęcił, przez to że jego logika niewątpliwie różni się od tej z html/css. Wiem, że można pisać pod desktop w javascripcie, ale po pierwsze jest to jak na razie rozwiązanie mało wydajne, a po drugie - jak sam wspomniałeś - jest to nowość i nie działa na starszych systemach operacyjnych, które bądź co bądź są dużo bardziej popularne od ósemki i póki co nie zanosi się na większe zmiany w tym względzie. Co do samego C# to już trochę go zdążyłem poznać, programowanie obiektowe mam nieźle opanowane, zdążyłem trochę ogarnąć bibliotekę .NET i przez ten czas używałem właśnie Windows Forms, które jednak nie może być wykorzystane do profesjonalnego tworzenia ładnych aplikacji, a przecież tego chcę się nauczyć. Wiem że używanie html i css w C# nie jest możliwe, w przeciwnym razie pewnie nawet nie brałbym się za XAMLa.

0

P.S. Jak może da się zauważyć, mój problem skupia się głównie na dynamicznym dodawaniu i zarządzaniu właściwościami WIELU kontrolek. Gdyby ktoś mógł mi trochę naświetlić ten temat, byłbym wdzięczny.

0
abcd1234 napisał(a):

przez ten czas używałem właśnie Windows Forms, które jednak nie może być wykorzystane do profesjonalnego tworzenia ładnych aplikacji

Byzydura, profesjonaliści nie mają problemów z tworzeniem ładnych aplikacji w WinForms: http://www.telerik.com/products/winforms.aspx

Wiem że używanie html i css w C# nie jest możliwe, w przeciwnym razie pewnie nawet nie brałbym się za XAMLa.

Gdy tworzy się aplikacje webowe, jest nie tylko wymagane, ale i niezbędne.

0

Co do 'byzydury' - może masz rację, ale to mało istotne. Istotne jest, że WPF jest ponoć lepsze od Windows Forms, i dlatego chciałem się tego nauczyć. Co do html w C# - od początku mówimy o aplikacjach desktopowych, więc pozwoliłem sobie zaniechać powtarzania tego na każdym kroku. Widzę że musisz się nieźle orientować w C# i .net, może ustosunkujesz się jakoś do mojego problemu?

1

Wszystko się da, o ile umiesz to zrobić.

Tabela,
pierwsze lepsze komponenty:

  • Grid (ColumnDefinition, ColumnDefinitions, RowDefinition, RowDefinitions,
    Column, Row, ColumnSpan, RowSpan); lub
  • DataGrid (DataGridTemplateColumn, DataGridTextColumn itp).

Kolor tekstu:
Zakładka Brushes w oknie Properties dla danej kontrolki. Właściwość Foreground.
W kodzie używasz metod struktury Color i jakiejś klasy, którą ją przyjmuje za wartość:

 button1.Foreground = new SolidColorBrush(Color.FromRgb(20, 0xAC, 0xFF));

Jak widzisz, można podać RGB za pomocą różnych zapisów liczb. ARGB, gradienty i inne rzeczy, które duszyczka zapragnie* są.

Tworzenie kontrolek.
Spowolnienia całego programu nie będzie, tylko co najwyżej opóźnienie w wyświetleniu kontrolek,
jak np. będziesz je tworzyć dopiero po pokazaniu się okna.

* z pewnymi wyjątkami

0

ok, pobawię się z gridami w takim wypadku. Co do tworzenia kontrolek: właśnie o to mi chodzi, żeby w jakiś sposób dodawać je dynamicznie bez opóźnienia w ich wyświetlaniu. jest to w ogóle możliwe?
@n0name_l, w kilku miejscach już czytałem, że nie da się stworzyć layoutu programu pisanego w C# za pomocą html, można tylko w XAMLu. Jeśli się mylę to proszę o sprostowanie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1