Laden...

Listview mit Contextmenü

Erstellt von ice_dragon vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.593 Views
I
ice_dragon Themenstarter:in
10 Beiträge seit 2009
vor 15 Jahren
Listview mit Contextmenü

Hallo Leute,

mal wieder ich mit nem Problem

ich frage mich warum der folgende Code nicht funktioniert


<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

I
ice_dragon Themenstarter:in
10 Beiträge seit 2009
vor 15 Jahren

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

<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>