Laden...

Größe vom UserControl an ContentControl Anpassen.

Erstellt von Duesmannr vor 3 Jahren Letzter Beitrag vor 3 Jahren 793 Views
D
Duesmannr Themenstarter:in
161 Beiträge seit 2017
vor 3 Jahren
Größe vom UserControl an ContentControl Anpassen.

Moin,

ich habe ein UserControl mit drei Buttons.
1.Oben links 1.Oben rechts 1.Unten rechts

Und das XAML in dem UserControl Tag

xmlns:local="clr-namespace:UploaderWPF.Views"
             mc:Ignorable="d" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">

Im Anhang ist das ausgeführte Programm, worin das ContentControl mit den Einstellungen ist:

<ContentControl Grid.Row="2" Content="{Binding Path=CurrentPageViewModel}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"/>

Darin sieht man auch das UserControl, wo der rechte untere Button nicht angezeigt wird, weil das UserControl nicht an das ContentControl angepasst wird.
Aber egal was ich probiere, es ist immer gleich groß.

Die Infos aus dem Link hab ich als letztes probiert, funktioniert aber auch nicht. Woran kann es liegen oder übersehe ich einfach irgendwas?

Grüße

5.657 Beiträge seit 2006
vor 3 Jahren

Aber egal was ich probiere, es ist immer gleich groß.

Was hast du denn probiert? Alles, was wir sehen, ist eine Fläche mit zwei Buttons.

funktioniert aber auch nicht

Poste doch mal den relevanten Code!

Weeks of programming can save you hours of planning

D
Duesmannr Themenstarter:in
161 Beiträge seit 2017
vor 3 Jahren

Poste doch mal den relevanten Code!

UserControl XAML:

<UserControl x:Class="UploaderWPF.Views.HomeView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:UploaderWPF.Views"
             mc:Ignorable="d" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
    <Grid Background="Magenta">
        <Button Content="Button" HorizontalAlignment="Left" Margin="2,0,0,0" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" Height="716" Width="242"></Button>
        <Button Content="Button" HorizontalAlignment="Left" Margin="543,0,0,0" VerticalAlignment="Top" Height="186" Width="537"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="969,655,0,0" VerticalAlignment="Top" RenderTransformOrigin="2.141,2.56" Height="55" Width="101"/>
    </Grid>
</UserControl>

Das XAML mit dem Grid worin das ContentControl ist:

<Grid Grid.Column="2">
            <Grid.RowDefinitions>
                <RowDefinition Height="30"></RowDefinition>
                <RowDefinition Height="3"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
            <StackPanel Grid.Row="0" Orientation="Horizontal">
                <Button Background="Transparent" BorderThickness="0" Width="150" Content="Startseite" Command="{Binding ChangeViewToHome}" CommandParameter="Home"/>
                <Separator>
                    <Separator.LayoutTransform>
                        <RotateTransform Angle="90" />
                    </Separator.LayoutTransform>
                </Separator>
                <Button Background="Transparent" BorderThickness="0" Width="150" Content="Statistik" Command="{Binding ChangeViewToStatistics}" CommandParameter="Statistics"/>
                <Separator>
                    <Separator.LayoutTransform>
                        <RotateTransform Angle="90" />
                    </Separator.LayoutTransform>
                </Separator>
                <Button Background="Transparent" BorderThickness="0" Width="150" Content="Einstellungen" Command="{Binding ChangeViewToSettings}" CommandParameter="Settings"/>
            </StackPanel>
            <customcontrols:ExtendedGridSplitter Cursor="Arrow" HorizontalAlignment="Stretch" Grid.Row="1" Height="3"></customcontrols:ExtendedGridSplitter>
            <ContentControl Grid.Row="2" Content="{Binding Path=CurrentPageViewModel}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"/>
        </Grid>

Die Logik mit dem Wechseln der UserControls ist wie hier.

Sonst hat nirgend etwas eine Funktion oder Logik.

Was hast du denn probiert? Alles, was wir sehen, ist eine Fläche mit zwei Buttons.

Damit meine ich, mit dem Setzen der Eigenschaften von den ganzen *Alignments im ContentControl und im UserControl Tag.
Nichts anderes, weil mir nichts anderes einfällt und ich nichts anderes im Internet finde.

4.931 Beiträge seit 2008
vor 3 Jahren

Du hast doch feste Werte für Breite und Höhe bei den Buttons angegeben (sowie eigenartige Margin-Werte)...

D
Duesmannr Themenstarter:in
161 Beiträge seit 2017
vor 3 Jahren

Du hast doch feste Werte für Breite und Höhe bei den Buttons angegeben (sowie eigenartige Margin-Werte)...

Die Margin Werte kommen vom Drag&Drop.

Also kann man das UserControl nicht an das ContentControl Anpassen? Also das, dass UserControl die Größe ändert.

4.931 Beiträge seit 2008
vor 3 Jahren

Doch, das UserControl wird der Größe angepaßt, nur die Buttons hast du ja an festen Positionen (Marginwerte relativ zu links-oben) angegeben.

Lösche doch mal die Marginwerte und gib vernünftige Alignments an.
Wenn du den einen Button immer unten rechts haben willst, dann


HorizontalAlignment="Right" VerticalAlignment="Bottom"

Und was sollen die RenderTransformOrigin-Werte? Willst du noch zusätzlich Transformationen durchführen?

Bei XAML immer der Reihe nach die Eigenschaften setzen, bis du das gewünschte Ergebnis hast (ansonsten können sich mehrere Eigenschaften gegenseitig ungewollt beeinflussen).

D
Duesmannr Themenstarter:in
161 Beiträge seit 2017
vor 3 Jahren

Und was sollen die RenderTransformOrigin-Werte? Willst du noch zusätzlich Transformationen durchführen?

Kam alles vom Drag&Drop, weil ich es testen wollte.

Lösche doch mal die Marginwerte und gib vernünftige Alignments an.

Habe ich gemacht. Funktioniert nun einwandfrei.
Also nie feste Werte setzen.

Danke für die Hilfe!