Ergebnis 1 bis 16 von 16
-
Bin neu hier
- 23.03.2011, 13:40
- #1
Hallo zusammen.
Ich habe meiner App ein Kontextmenü hinzugefügt:
Code:<ListBox x:Name="lstGeldausgaben" Margin="0,0,-12,0" ItemsSource="{Binding Geldausgaben}" MouseLeftButtonUp="ListBox_MouseLeftButtonUp"> <ListBox.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="20"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBlock Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" Text="{Binding Zweck}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> <TextBlock Grid.Column="0" Grid.Row="1" Text="{Binding Betrag,Converter={StaticResource doubleToStringConv}}" TextWrapping="Wrap" Margin="12,-6,-5,0" Style="{StaticResource PhoneTextSubtleStyle}"/> <TextBlock Grid.Column="1" Grid.Row="1" Text="€" TextWrapping="Wrap" Margin="12,-6,-5,0" Style="{StaticResource PhoneTextSubtleStyle}"/> <TextBlock Grid.Column="2" Grid.Row="1" Text="{Binding Path=Datum,Converter={StaticResource dateTimeConv}}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> <toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu> <toolkit:MenuItem x:Name="mniDeleteGeldausgabe" Header="Löschen" CommandParameter="{Binding ElementName=lstGeldausgaben,Path=SelectedItem}"> <toolkit:MenuItem.Command> <cmd:CommandDeleteGeldausgabe></cmd:CommandDeleteGeldausgabe> </toolkit:MenuItem.Command> </toolkit:MenuItem> </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu> </ListBox>
Eddie
-
entwickelt Apps
- 24.03.2011, 12:01
- #2
Also wenn du das Ausgewählte Item suchst, dafür gibt es eine Methode die dir das liefert. Das wäre dann in etwa ListBox.selectedItem.
Aber bin mir nicht sicher ob es dass ist was du suchst ^^
-
- 24.03.2011, 12:47
- #3
Ich mache das immer ein wenig anders. Ich packe das Contextmenü in das DataTemplate.
Dann setze ich für jedes MenuItem den DataContext={Binding}
Jetzt kannst du bei einem Click auf dieses Item bei Sender den DataContext abfragen und hast dein Item auf dem das ContextMenü aufgerufen wurde.
Was dein MenuItem.Command macht weiß ich nicht, dass habe ich noch nie verwendet.
Ich würde mal schätzen, dass du das wie im folgenden machen kannst (habe es aber nicht ausprobiert, sollte aber funktionieren)
Code:<ListBox x:Name="lstGeldausgaben" Margin="0,0,-12,0" ItemsSource="{Binding Geldausgaben}" MouseLeftButtonUp="ListBox_MouseLeftButtonUp"> <ListBox.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="20"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu> <toolkit:MenuItem x:Name="mniDeleteGeldausgabe" Header="Löschen" CommandParameter="{Binding}"> <toolkit:MenuItem.Command> <cmd:CommandDeleteGeldausgabe></cmd:CommandDeleteGeldausgabe> </toolkit:MenuItem.Command> </toolkit:MenuItem> </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu> <TextBlock Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" Text="{Binding Zweck}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> <TextBlock Grid.Column="0" Grid.Row="1" Text="{Binding Betrag,Converter={StaticResource doubleToStringConv}}" TextWrapping="Wrap" Margin="12,-6,-5,0" Style="{StaticResource PhoneTextSubtleStyle}"/> <TextBlock Grid.Column="1" Grid.Row="1" Text="€" TextWrapping="Wrap" Margin="12,-6,-5,0" Style="{StaticResource PhoneTextSubtleStyle}"/> <TextBlock Grid.Column="2" Grid.Row="1" Text="{Binding Path=Datum,Converter={StaticResource dateTimeConv}}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
Wenn das nicht funktioniert, kann ich dir meine Lösung geben
-
Bin neu hier
- 30.03.2011, 14:35
- #4
Zuerst einmal sorry für die späte Antwort.
@Nemoc: Genau das versuche ich ja. Es sieht fast so aus, als würde bei einem "Rechtsklick" auf ein Listenelement das entsprechende Item nicht selektiert.
@DehoDev: Habe ich probiert. Resultat ist, dass ich eine Exception "0xc00cee3a" bekomme. Einen Fehlertext (bis auf "0xc00cee3a") gibt es nicht.
Was genau soll bei "CommandParameter="{Binding}"" gebunden werden?
--
Kommando zurück! *g*
Hab soeben erst bei genauerer Betrachtung gesehen, dass du das ContextMenu innerhalb des Grids im DataTemplate platziert hattest... ich hatte es dahinter gesetzt... *schäm*
Jetzt, wo es auch innerhalb des Grids sitzt, klappt es auch.
Ich danke dir für den Tipp
-
Fühle mich heimisch
- 16.04.2011, 14:04
- #5
Tuet mir leid, das ich das Thema wieder "ausgrabe"
Was genau ist ein Command und wie mach ich dies?
Habe auch eine Listbox und möchte gerne Elemente davon löschen
Und gibt es eien Möglichkeit herauszufinden auf welcher Pivot seite der Benutzer ist, da ich eine Seite mit 2 Pivot Itemes haben, die je eine Listbox haben mit dem selben Template
Vielen Dank und gruss
Cr3dos
-
Bin neu hier
- 16.04.2011, 19:05
- #6
Hi Cr3dos,
hier eine Einführung in Commands zu geben würde wohl den Rahmen sprengen.
Aber es gibt ein kostenloses OpenBook von Galileo Computing zum Thema Visual C# 2010. Dort sind auch Kapitel zum Thema WPF (auch Commands) vorhanden.
Öhm... bzgl. der Pivots kann ich dir leider nicht helfen, da ich mit Pivots bisher nichts gemacht habe.
Viele Grüße,
Alex
-
Fühle mich heimisch
- 16.04.2011, 19:35
- #7
Hallo Alex
Danke für den Tipp. Werde ich mal anschauen
-
- 16.04.2011, 20:04
- #8
Die Commands werde ich mir auch mal anschauen, habe ich bisher auch noch nicht gekannt.
Aber um die Frage mit den Pivots zu beantworten:
Gib dem Pivot einen Namen in der xaml und dann kannst du im Code Behind mit pivotname.SelectedIndex den Index der aktuellen Seite herausfinden und setzen (Also zu anderem Pivotitem wechseln)
-
Fühle mich heimisch
- 16.04.2011, 20:05
- #9
Bin leider nicht wirklich schlau daraus geworden, gibt es nicht eine andere Möglichkeit, dass selektierte Item herauszufinden?
Edit: dehoDev danke für die Hilfe
Edit2: habe eine Lösung gefunden:
Man macht eine Click event mit dem Inhalt:
//string header = (sender as MenuItem).Header.ToString();
ListBoxItem selectedListBoxItem = this.listboxname.ItemContainerGenerator.ContainerFromItem((sender as MenuItem).DataContext) as ListBoxItem;;
if (selectedListBoxItem == null)
{
return;
}
-
entwickelt Apps
- 24.01.2012, 18:51
- #10
Hey,
muss das Thema mal wieder ausgraben. Worauf machst du das Click Event? Auf dem Menüitem?
Irgendwie werde ich au der anderen Lösung im Moment auch nicht ganz so schlau ^^
Danke und Gruss
Nemoc
-
Fühle mich heimisch
- 24.01.2012, 19:48
- #11
Hallo Nemoc
Ja das Click event macht man auf das Menu Item
<toolkit:MenuItem ... Click="menuItem_Click"/>
Gruss
Cr3dos
-
entwickelt Apps
- 24.01.2012, 20:01
- #12
mh, also bei mir gibt das für ListBoxItem selectedListBoxItem immer null.
Code:<toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu> <toolkit:MenuItem Header="Item 1" Click="MenuItem_Click"/> </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu>
-
Fühle mich heimisch
- 24.01.2012, 20:22
- #13
Wo hast du diesen Code drin?
Bei mir sieht es so aus:
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,2.5,5" >
<TextBlock Foreground="Black" Text="{Binding name}" FontWeight="Bold" FontSize="35" />
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="{Binding AppResources.loeschen, Source={StaticResource Locales}, Mode=OneWay}" Click="menuItem_Click"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</StackPanel>
</DataTemplate>
-
entwickelt Apps
- 24.01.2012, 20:26
- #14
Code:<ListBox ItemTemplate="{StaticResource MedikamenteItemTemplate1}" ItemsSource="{Binding AllMedikamente}" Name="VorhandenListbox" SelectionChanged="VorhandenListbox_SelectionChanged" Loaded="VorhandenListbox_Loaded"> <toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu> <toolkit:MenuItem Header="Item 1" Click="MenuItem_Click"/> </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu> </ListBox>
Als Datacontext wird im Konstruktor das ViewModel des Programmes gesetzt.
-
Fühle mich heimisch
- 24.01.2012, 20:52
- #15
Ich glaube du musst es ins MedikamenteItemTemplate1 packen. Aber versprechen kann ich nichts
-
entwickelt Apps
- 24.01.2012, 20:54
- #16
AAAAH! Volltreffer
Danke vielmals!
Ähnliche Themen
-
Enum an ListBox / ComboBox binden
Von EddieDean im Forum Windows Phone 7 EntwicklungAntworten: 0Letzter Beitrag: 23.03.2011, 11:03 -
Uhrzeit Listbox
Von Schledi im Forum Windows Phone 7 EntwicklungAntworten: 3Letzter Beitrag: 25.01.2011, 20:23 -
Kontextmenü ändern
Von anxifer im Forum HTC HD2 SonstigesAntworten: 1Letzter Beitrag: 20.01.2010, 21:42 -
Telefon nur noch direkte Wahl aus Anruferliste möglich, kein Kontextmenü mehr
Von takethetick im Forum Touch HD InterfaceAntworten: 2Letzter Beitrag: 04.06.2009, 06:38 -
menu bar item (kein pop-up) highlighten, aber wie?
Von ewiebe1 im Forum ProgrammierenAntworten: 10Letzter Beitrag: 27.01.2006, 08:42
Pixel 10 Serie mit Problemen:...