Autor Beitrag
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Sa 19.03.11 00:29 
Hallo Zusammen,

wenn ich Fenster in WPF erstelle, finde ich es schwer, diese resizeable zu erstellen. Wenn ich die Fenster vergrößere oder verkleinere, verschiebt sich der Inhalt völlig unproportional zur Größenänderung. Mir ist schon klar, dass dies u.a. mit fest gesetzten Width, Heights oder Allignments zusammenhängt. Dass es auch Größen gibt, die nicht mehr dargestellt werden können, ist auch klar.

Ich möchte aber gerne Fenster erstellen, die man in der Größe in einem gewissen Rahmen verändern kann und trotzdem noch vernünftig aussehen.

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt, sonst einfach nochmal nachfragen:)

Kann mir hier jemand Tips geben, wie man vorgehen sollte?

Viele Grüße
Frank
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 19.03.11 00:38 
user profile iconOppi35 hat folgendes geschrieben Zum zitierten Posting springen:
wenn ich Fenster in WPF erstelle, finde ich es schwer, diese resizeable zu erstellen.
Diese Aussage überrascht mich jetzt doch etwas :shock: . In Winforms ist Alignment ja quasi das Höchste der Gefühle, während WPF mit Margins und verschiedensten Panels absolute Angaben verachtet und und eigentlich keine Wünsche offen lassen sollte, sondern man vom ersten Moment an exakt festlegt, was beim Resize passieren soll. Kann es sein, dass du vorwiegend mit einem Designer arbeitest und dir des Panel-Aufbaus im XAML gar nicht wirklich bewusst bist?

_________________
>λ=
Oppi35 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Sa 19.03.11 09:10 
Hallo Sebastian,

das kann gut sein. Ich arbeite mich seit einiger Zeit in WPF mit Webcasts und diversen Büchern ein. Inzwischen reicht es dazu erste eigene Converter zu schreiben, Commands und eigene Dependency Properties zu erstellen. Derzeit beschäfitge ich mich gerade mit dem Layout und Templates. Dass die WPF die notwendigen Mittel zur vernüftigen Steuerung hat, bezweifel ich auch gar nicht, nur kenn ich sie leider nicht alle.

An dieser Stelle eine kleine Info zu mir, da wir uns ja doch öffter schreiben:))
Ich bin kein gelernter Entwickler. Bei der Arbeit wurden diverse Anwendungen ausschließlich in VBA erstellt. Es ging hier meist um kleinere Arbeitserleichterungen. Nachdem ich im Netz die Visual Studio Express Versionen entdeckt hatte, fing ich an, mich mit C# zu beschäftigen. Parallel dazu stellte ich fest, dass man unsere VBA Anwendungen viel besser in C# erstellen kann, als in VBA. Grund zu dem Zeitpunkt war: Mehr Möglichkeiten, bessere und einfachere Codeerstellung.

Daher bringe ich nicht das Wissen mit, was die meisten Entwickler von Windows Forms mitbringen. Klar weiß ich, wie man Controls auf einem Formular anordnet (gibts ja sogar in VBA:)), aber halt nicht die Details, die man aus der Programmiererfahrung lernt.

Und daher meine Frage, wie ich die Einstellungen in Panels mit Margins, Heights, Widths und event. weiteren Properties vornehmen sollte, damit ein vernüftiges Resize eines Fensters möglich ist. Bisher löse ich das ganze mit Resizemode=NoResize, aber das soll nicht so bleiben:)

Hier ist noch ein kurzer XAML Code, der mein Problem beschreibt:

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <DockPanel>
        
        <StatusBar DockPanel.Dock="Bottom" Height="30" VerticalAlignment="Bottom">
            <StatusBarItem Width="280"/>
            <StatusBarItem>
                <TextBlock Text="TESTTEXTBLOCK"/>
            </StatusBarItem>
            <StatusBarItem>
                <ProgressBar Height="20" Width="120"  Value="100"/>
            </StatusBarItem>
        </StatusBar>
    </DockPanel>
</Window>


Wie kann ich hier erreichen, dass z.B. die Progressbar und auch der Textblock proportional verkleinert werden und nicht abgeschnitten werden?

Viele Grüße
Frank
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 19.03.11 13:18 
user profile iconOppi35 hat folgendes geschrieben Zum zitierten Posting springen:
Parallel dazu stellte ich fest, dass man unsere VBA Anwendungen viel besser in C# erstellen kann, als in VBA.
Und vor allem ohne VBA :mrgreen: .

Die StatusBar macht es etwas komplizierter, da sie als ItemsControl ihr Panel schon mitbringt. Und das dürfte auch so erwünscht sein, denn ich glaube nicht, dass proportional vergrößernde StatusBarItems in irgendeiner Windows-Guideline vorgesehen sind. Wie auch immer, so könnte man beide Items auf 50% strecken:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
        <StatusBar DockPanel.Dock="Bottom" Height="30" VerticalAlignment="Bottom">
            <StatusBar.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="2" />
                </ItemsPanelTemplate>
            </StatusBar.ItemsPanel>
            <StatusBarItem>
                <TextBlock Text="TESTTEXTBLOCK"/>
            </StatusBarItem>
            <StatusBarItem HorizontalContentAlignment="Stretch">
                <ProgressBar Height="20" Value="100"/>
            </StatusBarItem>
        </StatusBar>

_________________
>λ=

Für diesen Beitrag haben gedankt: Oppi35