AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Avalon

Ein Thema von Jens Schumann · begonnen am 24. Aug 2005 · letzter Beitrag vom 25. Aug 2005
Antwort Antwort
Robert_G
(Gast)

n/a Beiträge
 
#1

Re: Avalon

  Alt 25. Aug 2005, 08:17
Oh, da habe ich dich wohl falsch verstanden.
In 2.0 wird nämlich auch der Designer code von SWF in einer anderen Datei abgelegt.

Zu Avalon aka WPF:

XAML mit DFM zu vergleichen, ist ziemlich unpassend.
DFM als Resource war sozusagen der Weg des geringsten Widerstandes. Es ist einfacher Design infos in ein solches Format zu packen und zur Laufzeit daraus die GUI zu erzeugen.
XAML ist ein Markup, das während des Compilierens mit MsBuild in Code und Resource umgewandelt wird.
Dadurch muss man zur Laufzeit nicht das ganze Design als Resource entpacken sondern man hat hauptsächlich Code mit den Werten (TExte, Farben,...) im schnellen BAML Format als Resource.

kleines Beispiel:
XML-Code:
<Window x:Class="AvalonApplication2.Window1"
        xmlns="http://schemas.microsoft.com/winfx/avalon/2005"
        xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005"
        Text="AvalonApplication2">
   <Grid>
      <Grid.RowDefinitions>
         <RowDefinition/>
         <RowDefinition/>
      </Grid.RowDefinitions>
      <TextBlock Grid.Row="0"
                 Name="TestTextBlock"
                 FontSize="50"
                 TextAlignment="Center"
                 VerticalAlignment="Center">
         Hallo welt
      </TextBlock>
      <Button Grid.Row="1"
              Click="TestClick"
              Width ="100"
              Height="30">
         Klick mich
      </Button>
   </Grid>
</Window>
Dem TextBlock gab ich einen Namen. Im generierten Designer Code wird deshalb ein Feld in meiner Windows class angelegt, das derm TextBlock entspricht.
Der Button bekam nur einen Click handler und bekommt kein Feld.

Den click handler muss ich im Code anlegen und kann darin auf den TextBlock zugreifen:

Delphi-Quellcode:
namespace AvalonApplication2;

interface

uses
  System.Windows;

type
  Window1 = public partial class(Window)
  private
    method TestClick(sender: Object; e: RoutedEventArgs);
  public
    constructor;
  end;
  
implementation

constructor Window1;
begin
  InitializeComponent();
end;

method Window1.TestClick(sender: Object; e: RoutedEventArgs);
begin
   TestTextBlock.TextContent := 'was anderes';
end;
  
end.
Wie du im Screeen shot sehen kannst, habe ich hier ein Feld, obwohl ich das nur im Markup angegeben habe.
Mit MsBuild sind eine Haufen Dinge möglich um Code während des Kompilierens zu injezieren.
Angehängte Grafiken
Dateityp: png jens.avalonsample_142.png (105,3 KB, 45x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz