Autor |
Beitrag |
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Fr 03.11.17 14:02
Hi Leute,
ich bin an einem ganz brand neuem WPF-Projekt und möchte meinen Fensterrahmen, das Fenster an sich und die Schriftart ändern. Wie geht das. Ich habe schon eine Seite gefunden, wo das beschrieben wird, aber das funktioniert bei mir nicht. Ich habe es erstmal bei einem leeren Fenster versucht, hat nicht geklappt.
Ich brauche das dringend, denn ich bin schon 2,5 Tage mit dem Projekt hinterher. Das ist viel bei mir im Unternehmen. Sehr viel.
Euer Kirk
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
doublecross
Beiträge: 149
Erhaltene Danke: 27
Windows 7
C#; Visual Studio 2015
|
Verfasst: Fr 03.11.17 14:43
Hallo,
was genau hast du denn versucht?
Willst du die Eigenschaften nur für ein bestimmtes Formular ändern, oder für alle in deiner Anwendung?
Worin genau sollen diese Änderungen bestehen?
So allgemein kann ich dir nur sagen, dass deine Recherchen wahrscheinlich in Richtung WPF CONTROL TEMPLATE gehen sollten. Da findet man dann auch Beispiele zur Veränderung der Formulareigenschaften.
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Fr 03.11.17 14:55
Hi Leute,
ich wollte mein Fenster Schwarz machen. Also oben die Leistr und der Rahmen. Und der Text soll in der Leiste auch in einer anderen Schriftart geschrieben werden.
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Palladin007
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Fr 03.11.17 15:07
Zitat: | Ich habe es erstmal bei einem leeren Fenster versucht, hat nicht geklappt. |
Was hast Du denn versucht?
Am besten Du postest den Link, wo Du die Erklärung her hast.
Und zusätzlich ist's hilfreich, den Code dazu zu sehen.
|
|
Ralf Jansen
Beiträge: 4706
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 03.11.17 15:15
Die WPF UI ist der Inhalt in einem Windows/Fenster. Das Fenster selbst ist Teil vom OS und wird von diesem gestyled. Anders ausgedrückt es gibt kein WPF Fenster und es ist auch nicht dein Fenster
Es gibt nur ein Windows Fenster das nicht den Regeln von WPF unterliegt sondern dennen von Windows. Damit zum OS gehört und eben nicht zu deinem Programm.
Der Klassiker wäre den Rahmen des Fensters auszublenden und dann eben den gewünschten Rahmen mit entsprechendem Look und allen notwendigen Funktionen nachzuprogrammieren. Wie das geht zeigt unter anderem der Link von doublecross.
|
|
Palladin007
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Fr 03.11.17 16:46
Dazu werf ich mal MahApps in den Raum.
Das ist ein Controls-Paket für WPF, was auch ein eigenes Window-Control mit liefert.
Dieses MahApps-Window lässt sich ganz gut stylen.
Die machen das vermutlich genau so, wie Ralf sagt:
Rahmen ausblenden und einen Eigenen bauen.
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Mo 06.11.17 10:25
Hi Leute;
@Ralf Jansen:
Kannst du mir erklären, wie man einen Fensterrahmen entfernt? Habe noch nie davon gehört...
@Palladin007:
Ich darf in meinem Unternehmen nicht einfach so was herunterladen. Ich muss das einreichen und etwa 'ne Woche auf die Genehmigung warten. Aber Danke
Euer Kirk
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Palladin007
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Mo 06.11.17 11:53
Schau dir mal diese beiden Window-Properties an:
Window.WindowStyle
Window.ResizeMode
Und Du darfst das nicht downloaden, obwohl es kostenlos ist?
Nagut, dann musst Du dir das wohl Zuhause anschauen
Wenn Du das Projekt gar nicht anschauen darfst, kannst Du dir ja auch anschauen, wie die das gelöst haben.
Oder Du bastelst dir Zuhause eine Window-Anpassung (oder kopierst aus dem MahApps-Projekt) und schickst dir die relevanten Code-Zeilen per Mail.
Nicht schön, aber so kannst Du die Download-Begrenzung umgehen ^^
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Mo 06.11.17 15:24
Hi Leute,
ich bin mit diesen zwei "Sachen" schon vertraut. Das eigentliche Ziel von mir ist, wie man die Farbe ändern kann. Nun, jmd. hat gesagt, dass man den Rahmen entfernen muss und einen selber Zeichnen und einsetzen muss. Wie geht das entfernen und zeichnen eines Windows-Rahmens?
Euer Kirk
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Th69
Beiträge: 4791
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mo 06.11.17 15:57
Dafür mußt du tief in die WinAPI-Trickkiste greifen, s. z.B. [Artikel] Custom Window Border für Form's (für WPF mußt du dann selbstverständlich Window statt Form verwenden etc.).
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Mo 06.11.17 15:58
Das klingt unglaublich kompliziert. Na mal sehen, ich werd das mal versuchen. Wie sagt ein Berliner-Sprichwort?: "Mit Jeduld und Spucke, krickste jede Mucke!"
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Palladin007
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Mo 06.11.17 17:18
Zitat: | ich bin mit diesen zwei "Sachen" schon vertraut. Das eigentliche Ziel von mir ist, wie man die Farbe ändern kann. Nun, jmd. hat gesagt, dass man den Rahmen entfernen muss und einen selber Zeichnen und einsetzen muss. Wie geht das entfernen und zeichnen eines Windows-Rahmens? |
Was meinst Du, wozu ich dir beiden Properties verlinkt habe?
Damit blendest Du den Window-Rahmen aus...
Alles Weitere musst Du per Hand basteln, z.B. mit einem ganz normalen Control.
Beispiel:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| <Window.Style> <Style TargetType="Window"> <Setter Property="ResizeMode" Value="CanResize" /> <Setter Property="WindowStyle" Value="None" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Window"> <DockPanel> <Grid DockPanel.Dock="Top" Background="Green"> <DockPanel Margin="10,5" LastChildFill="False">
<StackPanel DockPanel.Dock="Left"> <StackPanel.ContextMenu> <ContextMenu> <MenuItem Header="Minimieren" /> <MenuItem Header="Maximieren" /> <Separator /> <MenuItem Header="Schließen" /> </ContextMenu> </StackPanel.ContextMenu>
<Image Source="{TemplateBinding Icon}" /> <TextBlock Text="{TemplateBinding Title}" /> </StackPanel>
<UniformGrid DockPanel.Dock="Right" Columns="3"> <Button Content="_" Padding="5,0" /> <Button Content="□" Padding="5,0" Margin="2,0" /> <Button Content="X" Padding="5,0" /> </UniformGrid>
<Grid DockPanel.Dock="Right" Background="DarkGray" Width="0.5" Margin="5,0" />
<ItemsControl DockPanel.Dock="Right"> <ItemsControl.Items> <system:String>Button 1</system:String> <system:String>Button 2</system:String> <system:String>Button 3</system:String> </ItemsControl.Items> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <Button Content="{Binding}" Margin="5,0,0,0" /> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>
<TextBlock DockPanel.Dock="Right" Text="Viele coole Buttons: " /> </DockPanel> </Grid>
<Grid> <ContentPresenter /> </Grid> </DockPanel> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Style> |
Bindings (besonders der Buttons) musst Du noch selber bauen.
Pass aber beim ContextMenu auf, das liegt nicht im selben VisualTree wie das Window und macht da gerne Probleme.
Ein BindingProxy kann da aber Abhilfe schaffen.
Und Du musst sowas wie das Verschieben vom
Ach ja:
Du solltest dir noch die Trigger aus dem DefaultTemplate klauen.
Das DefaultTemplate bekommst Du so:
stackoverflow.com/qu...ate-in-visual-studio
Aber ich denke, am einfachsten ist es, wenn Du den Code von MahApps klaust und das raus wirfst, was Du nicht brauchst.
Außer Du hast Lust, mit der WinApi zu spielen
Je nachdem, wie fitt Du damit bist, halte ich das aber für keine gute Idee. Ich hab die Windows-TitleBar bisher noch nicht verändert, aber ich weiß aus eigener Erfahrung, dass man bei der Arbeit mit der WinApi schnell mal viele Stunden versenken kann und am Ende nichts erreicht hat - besonders wenn man sich nicht gut auskennt und das tun wenige.
Für diesen Beitrag haben gedankt: doublecross, Kirk1701A
|
|
|