myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » Listview mit Contextmenü
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Listview mit Contextmenü

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
ice_dragon ice_dragon ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.01.2009
Beiträge: 10
Entwicklungsumgebung: VS 2008


ice_dragon ist offline

Listview mit Contextmenü

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Leute,

mal wieder ich mit nem Problem

ich frage mich warum der folgende Code nicht funktioniert

XML-Code:
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Name="main"
>

    <Grid>
        <ListView DataContext="{Binding Path=ListElements}" ItemsSource="{Binding}">
            <ListView.ContextMenu>
                <ContextMenu DataContext="{Binding Path=DataContext.ContextMenuElements, ElementName=main}" ItemsSource="{Binding}">
                    <ContextMenu.ItemTemplate>
                        <DataTemplate>
                            <MenuItem Header="{Binding Path=Command.Text}" Command="{Binding Path=Command}"/>
                        </DataTemplate>
                    </ContextMenu.ItemTemplate>
                </ContextMenu>
                   .
                   .
                   .
            </ListView.ContextMenu>
        </ListView>
    </Grid>
</Window>

folgendes Problem:
das Window hat ein DataContext mit den Variabeln mit in der Richtigen Datenstuktur

also die einzelnen Properties sind vorhanden und auch genau so geschrieben, die Bindung funktioniert (überprüft indem ich dieses Binding {Binding Path=ContextMenuElements, ElementName=main} mal in die Liste gejagt habe).

Das Property 'ContextMenuElements' ist eine generische List vom Typ CommandBinding (INotifyPropertyChanged ist ebenfalls Implementiert)

das gleiche System hab ich auch schonmal an anderen stellen Implementiert an den es auch funktionierte, nur beim ContextMenü Funktioniert es nicht.

wenn ich das ganz mal debugge dann sehe ich das der DataContext des ContextMenüs = null ist, weise ich den Datacontext im Debugger nochmals zu (schnellansicht) funktioniert auch das ContextMenü

Viele Grüsse und schonmal Herzlichen Dank im Vorraus

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von ice_dragon am 18.03.2009 11:28.

Neuer Beitrag 17.03.2009 21:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ice_dragon ice_dragon ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.01.2009
Beiträge: 10
Entwicklungsumgebung: VS 2008

Themenstarter Thema begonnen von ice_dragon

ice_dragon ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

und nun die Lösung, das erklärt zwar nicht warum das nicht klappt aber ok

XML-Code:
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Name="main"
>

<Window.Resources>
        <CollectionViewSource x:Key="contextData" Source="{Binding Path=DataContext.ContextMenuElements, ElementName=main}" />
    </Window.Resources>

    <Grid>
        <ListView DataContext="{Binding Path=ListElements}" ItemsSource="{Binding}">
            <ListView.ContextMenu>
                <ContextMenu DataContext="{StaticResource contextData}"  ItemsSource="{Binding}">
                    <ContextMenu.ItemTemplate>
                        <DataTemplate>
                            <MenuItem Header="{Binding Path=Command.Text}" Command="{Binding Path=Command}"/>
                        </DataTemplate>
                    </ContextMenu.ItemTemplate>
                </ContextMenu>
                   .
                   .
                   .
            </ListView.ContextMenu>
        </ListView>
    </Grid>
</Window>

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ice_dragon am 18.03.2009 11:29.

Neuer Beitrag 18.03.2009 11:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 11 Jahre.
Der letzte Beitrag ist älter als 11 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 25.09.2020 21:45