Laden...

Navigation innerhalb von erstellten Pages klappt nicht

Letzter Beitrag vor einem Jahr 13 Posts 757 Views
Navigation innerhalb von erstellten Pages klappt nicht

Hallo Zusammen,

ich bin komplett neu im C# und XAML Game. Wie auch immer, ich probiere aktuell eine Anwendung zu schreiben für meine Masterthesis nebenbei.

Hierbei habe ich mit Hilfe eines YT-Tutorials eine Navigationsbar eingefügt, welche mich zwischen vier verschiedenen Seiten switchen lässt. Nun wollte ich eine ähnliche Navigation innerhalb der Page 2 machen. Leider klappt das nicht so wie gewollt, da der Bezug fehlt. Hier meine Fehlermeldung:

Fehler    XDG0008    Der Name "NavigationSeite2" ist im Namespace "clr-namespace:WpfAppToolBar" nicht  vorhanden.

Hier mein Code: https://github.com/FinnDunkel/-myCsharp.git

Danke vorab für eure Hilfe!

Das funktioniert wahrscheinlich nicht, da der Namespace nicht stimmt. In der Datei Page2.xaml ist local auf WpfAppToolBar.Pages definiert. NavigationSeite2 liegt aber im Namespace WpfAppToolBar.

Eine Änderung in Page2.xaml sollte das Problem beheben.

Statt

<local:NavigationSeite2 Text="Warum geht das nicht?"/>

das hier

<n:NavigationSeite2 Text="Warum geht das nicht?"/>

Hey, danke für die Antwort. Leider klappt es aber nicht...

Auf der Page2.xaml habe ich die Namespaces folgendermaßen beschrieben:

xmlns:local="clr-namespace:WpfAppToolBar.Pages" 
xmlns:n="clr-namespace:WpfAppToolBar"

Meine Datei "NavigationSeite2.cs hat folgenden Namespace:

namespace WpfAppToolBar 

Wenn ich nun, wie von dir vorgeschlagen, das versuche über n:NavigationSeite2 aufzurufen, erhalte ich folgende Fehlermeldung:

"Der Name "NavigationSeite2" ist im Namespace "clr-namespace:WpfAppToolBar" nicht vorhanden."

Weißt du woran das liegt?

LG

Das merkwürdige ist ja, dass ich die NavigationSeite2 aufrufen kann ohne Probleme. Mir wird sogar das Textfeld angezeigt, jedoch ohne Inhalt...

Weil dir zu deinem Control noch ein Style fehlt. Ohne Style weiß WPF doch nicht wie es das darstellen soll. Ich habe es dir mal in die App.xaml eingebaut:

<Application x:Class="WpfAppToolBar.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfAppToolBar"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
     
        <Style TargetType="{x:Type local:NavigationSeite2}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type local:NavigationSeite2}">
                        <ContentPresenter ContentSource="Text"
                                          TextElement.Foreground="{TemplateBinding Foreground}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        
    </Application.Resources>
</Application>

Hat die Blume einen Knick, war der Schmetterling zu dick.

Das hat super geklappt, danke!

Wie bekomme ich das gleiche nun auch für meine Bilder hin? Und warum wird der gesetzte Setter in der Datei "GenericSeite2.xaml" nicht ausgeführt?

<Setter Property="Cursor" Value="Hand"/>

Weil du irgendwo auch sagen musst, was er wie wo laden soll. Z.B. in der App.xamlweil das für die gesamte Anwendung gilt:

<Application x:Class="WpfAppToolBar.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfAppToolBar"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/Generic.xaml" />
                <ResourceDictionary Source="Themes/GenericSeite2.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
        
    </Application.Resources>
</Application>

Hat die Blume einen Knick, war der Schmetterling zu dick.

Das hat nicht so richtig geklappt. Ich habe dem Dictionary noch einen Schlüssel zuweisen müssen. Leider lassen sich die Bilder auf der Seite "Page2" immer noch nicht anzeigen, beim Abrufen des Schlüssels vom Dictionary ist auch etwas schief gelaufen. Des Weiteren lassen sich die anderen Seiten auch nicht öffnen durch den Text bzw. das nicht vorhandene Bild... keine ahnung 😦

Zudem wurde in dem Youtube Video mit Hilfe der Frame Funktion die Navigation gesteuert:

        <Frame Source="/Pages/Page2.xaml" NavigationUIVisibility="Hidden"/>

Sobald ich die Funktion jedoch wieder ausklammer und versuche die Anwendung zu starten, hängt sich die Anwendung auf, sobald ich versuche zur zweiten Seite zu navigieren. Irgendwelche Ideen warum?

Ich habe den Code nochmal neu hochgeladen auf Github. Kannst du nochmal drüber schauen?

https://github.com/FinnDunkel/BlonderHans.git

Vielen lieben Dank vorab!

Versuch doch mal die App.xaml exakt genau so wie ich die gepostet habe.

Genau aus diesem Grund habe ich die auch komplett gepostet

Hat die Blume einen Knick, war der Schmetterling zu dick.

Hallo FinnDunkel,

mir scheint, du machst "Learning by doing". Da dein Projekt aber, den Sourcen nach, wohl eine Firmenanwendung werden soll, solltest du frühzeitig die Grundlagen erlernen und dies entsprechend verwenden. Und dazu gehört insbesondere [Artikel] MVVM und DataBinding (also möglichst kein Code im CodeBehind [".xaml.cs"] , sondern im ViewModel).

Für Navigation mit MVVM schau dir mal folgende Links an:

Ich weiß, das ist erst einmal eine hohe Hürde, aber es ist das beste, du schaust dir ein paar Beispielprojekte an und versuchst diese dann entsprechend zu adaptieren.

Okay, vielen Dank!

Ich werde mir die Típps zu Herzen nehmen, jedoch werde ich nach meiner Masterarbeit sicherlich nie wieder programmieren müssen, weshalb ich es auch okay finde, wenn ich mich damit nicht so gut auskenne 😄

"dürfen". Es heisst "dürfen". "müssen" würde ausdrücken, was wäre was schlechtes 😉

Zitat von Abt

"dürfen". Es heisst "dürfen". "müssen" würde ausdrücken, was wäre was schlechtes 😉

Warum gibt's hier eigentlich immer noch keinen "Like" Button? 😉

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(