Frage zu TabControl bzw. TabItems

  • WPF

Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von Parmaster.

    Parmaster schrieb:

    <FrameworkElement x:Name="c1"/>


    Ja , das kann auch nicht funktionieren.
    Powerschell kann nicht auf die x:Class zugreifen
    weil diese ja gar nicht vorhanden ist. X:Class wäre in dem Fall dein MainWindow und das kann auf das FrameWorkElemnt zugreifen und dann kannst du x:Name vergeben. x:Name ist nur der Name für ein FrameworkElement.
    Das FrameworkElement wiederum benutzt du um die Breite für dein TabItem anzupassen.
    Weil diese Breite (von c1 FrameworkElement) automatisch angepasst wird.

    XML-Quellcode

    1. Width="{Binding ElementName=c1, Path=ActualWidth}"

    Deshalb funktioniert das mit deinem Style und nicht mit dem x:Name="c1".
    Aber ich finde das die lösung mit den Style besser ist. Den Style könntest du in Visual Studio in eine
    ResourceDictonary als Statische Resource auslagern zum Beispiel und könntest es für alle deine TabControls in deiner App verwenden.
    Überleg dir ob du Visual Studio benutzen solltest.
    Das nimmt dir viele Aufgaben ab und verwirrt dich nicht so beim lernen.
    Mit Powershell musst du das alles manuell machen.

    Vielleicht klappt das wenn du Name="c1" schreibst ohne x: . :?:

    Warum willst du das unbedingt mit Powershell machen?
    Für Lernzwecke?

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Amro“ ()

    ErfinderDesRades schrieb:

    was heisst "funktioniert nicht"?


    Da ich keine x:Class habe, geht es nicht.


    Ich benutze das mit dem Style, das ist für mich übersichtlicher.
    Das letzte mal etwas programmiert habe ich 2015, und da auch mit WindowsForms. WPF habe ich noch nie benutzt.

    PowerShell deshalb, weil wir das auf der Arbeit benutzen.
    Ah Ok.
    Das heißt dann das du nur die Oberfläche sprich das Designe erstellen willst und gar nicht Programmieren willst.
    Wenn das der Fall ist solltest du dir Visual Studio Blend.
    Das ganze mit Shell zu machen ist ja Wahnsinn. Selbst in Visual Studio kannst du nur Designen und musst nicht unbedingt Programmieren.
    Dann würde ich mir den XAML Code Kopieren es anpassen und in Shell ausführen wenn es unbedingt sein muss.
    Wäre immer noch schneller und effiktiver. Du hast ein Desingner der dir direkt deine Ansicht anzeigt. Du Hast xaml Syntax Highlighting.
    Du siehst sofort die Fehler und kannst sogar die Toolbox benutzen. Und noch vieles mehr.
    Ja, das war ehrlich gesagt meine "Idee", was ich mittlerweile etwas bereue. :D

    Ich habe gezeigt dass es geht (weil manche es nicht hinbekommen einen Pfad in die Shell einzufügen), und jetzt soll ich die Eierlegendewollmilchsau machen, sprich "alle/viele" Scripts in ein Programm. Habe dann den Vorschlag gemacht ein TabControl zu benutzen, da kam dann wieder die Frage auf, ob man die Tabs "ziehen" kann auf die Größe des Controls. Also nicht das jedes Tab z.B. 20px breit ist (oder so breit wie der Headername), sondern halt bei 2 je 50%, bei 4 je 25%, usw.

    Mit Blend habe ich noch nie etwas gemacht. Wollte gestern mal reinschauen und weiß schon nicht was für eine Art Projekt man dafür erstellen muss. Bei mir kam immer nur eine Vorlage für eine dll. Muss mir das nochmal genauer anschauen.
    Ich muss das Thema nochmal öffnen, da ich mir zwischenzeitlich noch eine Frage gestellt habe.

    Ist es möglich, innerhalb der XAML weitere XAML Dateien zu laden? Ich benutze kein C# oder VB.
    Ich würde den Code gerne etwas übersichtlicher gestalten, deshalb die Aufteilung.
    Also ungefähr so:

    XML-Quellcode

    1. <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Width="1334" Height="716" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,0,0,0">
    2. <Grid>
    3. <TabControl Style="{DynamicResource TabControlStyleStretch}" Margin="20" >
    4. <TabControl.Template>
    5. <ControlTemplate TargetType="TabControl">
    6. <DockPanel>
    7. <UniformGrid IsItemsHost="True" Rows="1" DockPanel.Dock="Top"></UniformGrid>
    8. <ContentPresenter ContentSource="SelectedContent"></ContentPresenter>
    9. </DockPanel>
    10. </ControlTemplate>
    11. </TabControl.Template>
    12. <TabItem Header="Years">
    13. HIER tab1.xaml laden
    14. </TabItem>
    15. <TabItem Header="Tables">
    16. HIER tab2.xaml laden
    17. </TabItem>
    18. <TabItem Header="Items">
    19. <HIER tab3.xaml laden
    20. </TabItem>
    21. <TabItem Header="Favorites">
    22. HIER tab4.xaml laden
    23. </TabItem>
    24. </TabControl>
    25. </Grid></Window>


    Ich finde nur Beispiele wo das mit C# im Hintergrund gemacht wird, aber nicht wie es geht nur mit XAML.
    Geht das überhaupt?
    Das habe ich eben erst gelesen:

    Parmaster schrieb:

    Ja, habe das verstanden, nur benutze ich für dieses Programm kein VS und auch kein C#/VB.NET.


    Womit arbeitest du dann?

    Ja, man lernt nie aus. Cool das man damit für PS ein UI machen kann. Da kann ich dir aber nichts zu sagen, da kenn ich mich nicht mit aus. Hab mal eben ein paar PS Scripte dazu angeschaut, auch damit geht das, hier z.B.:
    codeproject.com/Questions/1117…usercontrol-in-powershell

    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „DTF“ ()

    ErfinderDesRades schrieb:

    Ists möglich iwo ein klein Beispiel abzugreifen?


    Hab da auch schon geschaut. Hier findest du unten bei Epilog ein Copy&Paste Ready beispiel:(Natürlich auch eine kleine Anleitung)

    attilakrick.com/powershell/gui-mit-powershell-erstellen/

    Dieses Srcipt entweder einfach in Powershell reinkopieren, also wenn du den Code im Clipboard hast, einen rechtsklick im PS-Terminal und schon wird das Zeilenweise ausgeführt.
    Eine weitere Möglichkeit hab ich auch, dazu musst du erst powershell als Admin starten die Policy ändern mit z.B. diesen Command Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force; eingebn und bestätigen, sonst kannst du keine PS1 Dateien ausführen geht wohl nur wenn das script signiert ist, wenn ich richtig verstanden hab. Speicher das in einer *.ps1 Datei und führe das mit powershell aus.

    Gibt auch in windows einen Editor: Klicke auf den Windows-Start-Button schreibe einfach nur Power, dann sollte dir "Windows Powershell ISE" vergeschlagen werden, starte das und kopiere den Code dort rein. Dann wie im Studio den "Play-Button" klicksen. So wie eim Anhang schaut das dann aus.

    Wegen der Policies:
    learn.microsoft.com/en-us/powe…icies?view=powershell-7.3
    Bilder
    • 1.jpg

      689,74 kB, 2.726×1.254, 48 mal angesehen
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „DTF“ ()