Avatar billede qurzyx Nybegynder
25. oktober 2007 - 18:43 Der er 5 kommentarer

Ændre str.

Hej.
Jeg bruger C# 3.5 i en WPF app. (dog uden XAML <- Vigtigt!).

Jeg ville høre om nogle havde hints til hvordan jeg kunne have en form bestående af en left usercontrol og en right usercontrol, og så at man kunne trække størrelse på være vindue, altså lige som menuerne i visual studio... En bar til venstre hvor man kan trække størrelse hvis man ønsker eller klikke så menuen folder sig helt sammen???
Avatar billede sandrasmurf Nybegynder
26. oktober 2007 - 20:53 #1
Hvis du bare vil have en todelt opdeling, der kan varieres i størrelse, så er der allerede en splitter control indbygget i .net. Men den kender du nok allerede.

Hvis du vil have Visual Studio funktionalitet, hvor man både kan resize og pinne et vindue, så er det mere alvorligt.

Der findes en del fede kommercielle paneler, men det skal vel være gratis?

Der ligger en guide på Codeguru, som du måske kan få noget ud af -> http://www.codeguru.com/csharp/csharp/cs_syntax/componentdevelopment/article.php/c14179/

Ellers var det måske værd at kigge på følgende Open Source projekt -> http://sourceforge.net/projects/dockpanelsuite/

Jeg har ikke selv erfaring med to ovenstående kilder, men især det sidste link ser meget fornuftig ud.
Avatar billede nielle Nybegynder
26. oktober 2007 - 21:26 #2
Nu gik spøregsmålet jo specifikt på WPF (Windows Presentation Foundation) som er et 3.0 alternativ til Windows Forms.

I WPF kunne det f.eks. se sådan her ud:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace e802831
{
    class Window2 : System.Windows.Window
    {
        public Window2()
        {
            Title = "Eksperten 2";

            // Layout laves via en Grid

            Grid grid = new Grid();
            this.AddChild(grid);

            // Opret 3 søjler (og 1 række) i grid'et.

            ColumnDefinition colDef = new ColumnDefinition();
            grid.ColumnDefinitions.Add(colDef);

            colDef = new ColumnDefinition();
            colDef.Width = GridLength.Auto;
            grid.ColumnDefinitions.Add(colDef);

            colDef = new ColumnDefinition();
            grid.ColumnDefinitions.Add(colDef);

            // Indsæt et StackPanel i celle 0,0 - venstre side.

            StackPanel stackPanelLeft = new StackPanel();
            stackPanelLeft.Background = Brushes.AliceBlue;
            Grid.SetColumn(stackPanelLeft, 0);
            Grid.SetRow(stackPanelLeft, 0);
            grid.Children.Add(stackPanelLeft);

            // Indsæt en Gridsplitter i celle 1,0 - midten.
            // Det er den man kan resize de to sider med.

            GridSplitter gridSplitter = new GridSplitter();
            gridSplitter.HorizontalAlignment = HorizontalAlignment.Center;
            gridSplitter.VerticalAlignment = VerticalAlignment.Stretch;
            gridSplitter.Background = Brushes.Black;
            gridSplitter.ShowsPreview = true;
            gridSplitter.Width = 1;
            Grid.SetColumn(gridSplitter, 1);
            Grid.SetRow(gridSplitter, 0);
            grid.Children.Add(gridSplitter);

            // Indsæt et StackPanel i celle 2,0 - højre side.

            StackPanel stackPanelRight = new StackPanel();
            stackPanelRight.Background = Brushes.Red;
            Grid.SetColumn(stackPanelRight, 2);
            Grid.SetRow(stackPanelRight, 0);
            grid.Children.Add(stackPanelRight);

            // Begynd at indsætte indhold i venstre side - her bare en tekst.

            TextBlock textBlock = new TextBlock();
            textBlock.Text = "Venstre";
            stackPanelLeft.Children.Add(textBlock);

            // Begynd at indsætte indhold i højre side - her bare en tekst.

            textBlock = new TextBlock();
            textBlock.Text = "Højre";
            stackPanelRight.Children.Add(textBlock);
        }
    }
}
Avatar billede nielle Nybegynder
26. oktober 2007 - 21:28 #3
Jeg ved ikke hvorfor at løsningen ikke må indeholde XAML, for det er nu engang noget mere kompakt end ovenstående:

<Window x:Class="e802831.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="e802831" Height="300" Width="300"
    >
  <Grid>
    <Grid.ColumnDefinitions>
      <ColumnDefinition/>
      <ColumnDefinition Width="Auto" />
      <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="0" Background="AliceBlue">
      <TextBlock>Venstre</TextBlock>
    </StackPanel>

    <GridSplitter Grid.Column="1"
                  HorizontalAlignment="Center" VerticalAlignment="Stretch"
                  Background="Black" ShowsPreview="True" Width="1" />

    <StackPanel Grid.Column="2" Background="AntiqueWhite">
      <TextBlock>Højre</TextBlock>
    </StackPanel>
  </Grid>
</Window>
Avatar billede nielle Nybegynder
31. oktober 2007 - 11:36 #4
Har du fået kigget på det?
Avatar billede nielle Nybegynder
06. november 2007 - 19:32 #5
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester