none
Problem: DataGrid und SelectedItem/SelectedIndex RRS feed

  • Frage

  • Guten Abend liebe Community,

    wieder einmal habe ich mich einem neuen Projekt gewidmet und komme nicht weiter :P

    Die App habe ich in Visual Studio 2012 C# geschrieben.

    Mein Problem ist folgendes:

    Ich greife mit meiner Windows 8 App auf eine XML-API auf meinem Server zu. Diese lese ich aus und lasse mir die Ergebnisse in einem DataGrid wiedergeben. Dies funktiomiert auch so weit. Nun möchte ich aber das, wenn ich ein DataGridItem klicke, dass ich zumindesten irgendeine Reaktion bekomme. Leider bekomme ich nie Daten und wenn ich mir den SelectedIndex ausgeben lasse, bekomme ich nur -1.

    XAML:

    <common:LayoutAwarePage
        x:Name="pageRoot"
        x:Class="Homeserver.Documents"
        DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:Homeserver"
        xmlns:common="using:Homeserver.Common"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Page.Resources>
    
            <!-- TODO: Delete this line if the key AppName is declared in App.xaml -->
            <x:String x:Key="AppName">My Application</x:String>
        </Page.Resources>
    
        <!--
            This grid acts as a root panel for the page that defines two rows:
            * Row 0 contains the back button and page title
            * Row 1 contains the rest of the page layout
        -->
        <Grid Style="{StaticResource LayoutRootStyle}">
            <Grid.RowDefinitions>
                <RowDefinition Height="140"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <!-- Back button and page title -->
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
                <TextBlock x:Name="pageTitle" Grid.Column="1" Text="Dokumente" Style="{StaticResource PageHeaderTextStyle}"/>
            </Grid>
    
            <!-- Dokumentenansicht -->
            <GridView
                x:Name="documents"
                Margin="10"
                Grid.Row="1"
                SelectionMode="Multiple"
                IsSwipeEnabled="True"
                ItemsSource="{Binding}"
                CanDragItems="True"
                IsItemClickEnabled="True"
                ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                ScrollViewer.VerticalScrollBarVisibility="Auto"
                IsDoubleTapEnabled="False"
                Tapped="Download_Item"
                AutomationProperties.AutomationId="ItemsGridView"
                AutomationProperties.Name="Items">
    
                <GridView.ItemTemplate>
                    <DataTemplate>
                        <GridViewItem>
                            <Grid Height="110" MinWidth="1800" Margin="6">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110">
                                    <Image Source="{Binding Image}" Stretch="UniformToFill"/>
                                </Border>
                                <StackPanel Grid.Column="1" VerticalAlignment="Center" Margin="10,0,0,0">
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}" FontSize="30" TextWrapping="NoWrap"/>
                                    <TextBlock Text="{Binding Create}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
                                    <TextBlock Text="{Binding Format}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
                                    <TextBlock Text="{Binding Path}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
                                </StackPanel>
                            </Grid>
                        </GridViewItem>
                    </DataTemplate>
                </GridView.ItemTemplate>
                
            </GridView>
    
            <VisualStateManager.VisualStateGroups>
    
                <!-- Visual states reflect the application's view state -->
                <VisualStateGroup x:Name="ApplicationViewStates">
                    <VisualState x:Name="FullScreenLandscape"/>
                    <VisualState x:Name="Filled"/>
    
                    <!-- The entire page respects the narrower 100-pixel margin convention for portrait -->
                    <VisualState x:Name="FullScreenPortrait">
                        <Storyboard>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton" Storyboard.TargetProperty="Style">
                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PortraitBackButtonStyle}"/>
                            </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
    
                    <!-- The back button and title have different styles when snapped -->
                    <VisualState x:Name="Snapped">
                        <Storyboard>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton" Storyboard.TargetProperty="Style">
                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedBackButtonStyle}"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="pageTitle" Storyboard.TargetProperty="Style">
                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedPageHeaderTextStyle}"/>
                            </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
        </Grid>
    </common:LayoutAwarePage>
    

    C#-Code:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Xml;
    using System.Xml.Linq;
    using System.Xml.Serialization;
    using Windows.Data.Xml.Dom;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    
    // Die Elementvorlage "Standardseite" ist unter http://go.microsoft.com/fwlink/?LinkId=234237 dokumentiert.
    
    namespace Homeserver
    {
        /// <summary>
        /// Eine Standardseite mit Eigenschaften, die die meisten Anwendungen aufweisen.
        /// </summary>
        public sealed partial class Documents : Common.LayoutAwarePage
        {
            public Documents()
            {
                this.InitializeComponent();
                this.Show_Documents();
            }
    
            protected async void Show_Documents()
            {
                var client = new HttpClient();
                var response = await client.GetAsync("http://192.168.18.135/W8App/Documents.php");
                var text = response.Content.ReadAsStringAsync();
    
                XElement xmlDocuments = XElement.Parse(text.Result);
                IEnumerable<Common.DataBinding.Document> data = from XMLRequest in xmlDocuments.Descendants("Document")
                                                                select new Common.DataBinding.Document
                                                                {
                                                                    Title = XMLRequest.Element("Name").Value,
                                                                    Create = XMLRequest.Element("Create").Value,
                                                                    Format = XMLRequest.Element("Format").Value
                                                                };
                documents.DataContext = data;
            }
    
            /// <summary>
            /// Füllt die Seite mit Inhalt auf, der bei der Navigation übergeben wird. Gespeicherte Zustände werden ebenfalls
            /// bereitgestellt, wenn eine Seite aus einer vorherigen Sitzung neu erstellt wird.
            /// </summary>
            /// <param name="navigationParameter">Der Parameterwert, der an
            /// <see cref="Frame.Navigate(Type, Object)"/> übergeben wurde, als diese Seite ursprünglich angefordert wurde.
            /// </param>
            /// <param name="pageState">Ein Wörterbuch des Zustands, der von dieser Seite während einer früheren Sitzung
            /// beibehalten wurde. Beim ersten Aufrufen einer Seite ist dieser Wert NULL.</param>
            protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
            {
                Show_Documents();
            }
    
            /// <summary>
            /// Behält den dieser Seite zugeordneten Zustand bei, wenn die Anwendung angehalten oder
            /// die Seite im Navigationscache verworfen wird. Die Werte müssen den Serialisierungsanforderungen
            /// von <see cref="SuspensionManager.SessionState"/> entsprechen.
            /// </summary>
            /// <param name="pageState">Ein leeres Wörterbuch, das mit dem serialisierbaren Zustand aufgefüllt wird.</param>
            protected override void SaveState(Dictionary<String, Object> pageState)
            {
            }
    
            private void Download_Item(object sender, TappedRoutedEventArgs e)
            {
                var test = documents.SelectedItem;
    
                Common.DataBinding.Document Spiele = new Common.DataBinding.Document { Title = test.ToString() };
    
                List<Common.DataBinding.Document> MainMenu = new List<Common.DataBinding.Document>();
                MainMenu.Add(Spiele);
                documents.DataContext = MainMenu;
            }
        }
    }
    

    Schon mal vielen Dank im Vorraus.

    VG

    BlackRose2

    Dienstag, 13. Mai 2014 19:47

Antworten

  • Ich habe das Problem jetzt gelöst/Ich habe eine tolle Anleitung gefunden :D

    private void Download_Item(object sender, ItemClickEventArgs e)
            {
                var item = ((Common.DataBinding.Document)e.ClickedItem).Title;
    
                Common.DataBinding.Document Spiele = new Common.DataBinding.Document { Title = item.ToString() };
    
                List<Common.DataBinding.Document> MainMenu = new List<Common.DataBinding.Document>();
                MainMenu.Add(Spiele);
                documents.DataContext = MainMenu;
            }

    Damit kann ich nun jeden Button einzeln auslesen. Trotzdem bedanke ich mich für deine Hilfe.

    Das habe ich für als Lösungshilfe verwendet: http://www.codeproject.com/Articles/599505/Databind-XML-Feed-in-Windows

    VG

    BlackRose2


    • Als Antwort markiert BlackRose2 Donnerstag, 15. Mai 2014 17:49
    • Bearbeitet BlackRose2 Donnerstag, 15. Mai 2014 18:23
    Donnerstag, 15. Mai 2014 17:49

Alle Antworten

  • Hallo,
    wenn du wissen wilslt, wenn sich der SelectedIndex geändert hat, musst du das SelectionChanged-Event des GridViews abonnieren.

    Die Auswahl eines Items geschieht im GridView standardmäßig mit Links. So verält sich das Control wie der Homescreen. Linksklick öffnet eine App und Rechtklick wält eine App aus. Wenn du durch einen Linksklick ebenfalls ein Item arkieren willst, kannst du das Tapped-Ereignis des Grids im Template verwenden (ItemClick-Event funktionierte bei mir nicht):

    <GridViewItem>
        <Grid Height="110" MinWidth="1800" Margin="6" Tapped="OnItemTapped" Tag="{Binding}">
    private void OnItemTapped(object sender, TappedRoutedEventArgs e)
    {
        documents.SelectedItem = (sender as Grid).Tag;
    }

    sender ist das angetippte Grid und Tag enthält das gesamte Item, welches angezeigt wird. Tag ist eine Eigenschaft, die nur für Benutzerdefinierte Daten da ist.

    Wenn du nur ein Element antippen willst, aber nicht mehrere markieren solltest du die SelectionMode-Eigenschaft auf Single stellen.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Dienstag, 13. Mai 2014 21:53
  • Vielen Dank für deine schnelle Antwort. Ich habe deine Methode versucht, bekomme aber leider folgende Fehlermeldung:

    Object reference not set to an instance of an object.

    Dabei wird folgendes markiert:

    documents.SelectedItem = (sender as Grid).Tag;

    Mittwoch, 14. Mai 2014 14:14
  • Wen dir der Fehler markiert wird, zeige bitte mit der Maus einmal auf sender und einmal auf Tag. Bei welchem steht "null" da?

    sender ist natürlich nur ein Grid, wenn du Tapped auch von einem Grid abonniert hast. (Nicht vom GridView!)
    Hast du auch wirklich die Tag-Eigenschaft im XAML gebunden, wie ich es gezeigt habe?

    > Bei mir funktioiert alles bestens.


    Mir fällt gerade auf, warum das ItemClick-Event nicht funktioniert. Im DataTemplate für die Items darfst du kein GridViewItem einfügen. Das wird später automatisch getan. Der Anfang muss also so aussehen:

    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid Height="110" MinWidth="1800" Margin="6">
    Wenn das der Fall ist, kannst du einfach das ItemClick-Event abonieren:
    <GridView ItemClick="OnItemClick" 
    private void OnItemClick(object sender, ItemClickEventArgs e)
    {
        documents.SelectedItem = e.ClickedItem;//Angeklicktes Item zuweisen
    }




    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 14. Mai 2014 14:47
  • Danke... Ich habe das nun so weit abgeändert. Leider bekomme ich nicht den Inhalt des Items sonder nur:

    Homeserver.Common.DataBinding+Document

    Mittwoch, 14. Mai 2014 15:10
  • Mit welcher meiner Lösungen arbeitest du denn nun? ItemClick oder Grid.Tapped?
    Ich würde ItemClick bevorzugen, testen würde ich aber Beide.

    Auch weiß ich nicht, um welchen Inhalt es sich jetzt dreht.Ich dachte, es geht lidilich um die zuweisung des SelectedItems durch einen linksseitigen Mausklick!?

    Ohne Informationen kann dir keiner helfen.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 14. Mai 2014 16:15
  • Tut mir leid:)

    Ich hab die ItemClick-Lösung genommen. Hier noch mal der Code, den ich verwende, um die Informationen aus dem Teil zu holen :D

    private void Download_Item(object sender, ItemClickEventArgs e)
            {
                documents.SelectedItem = e.ClickedItem;
    
                Common.DataBinding.Document Spiele = new Common.DataBinding.Document { Title = documents.SelectedItem.ToString() };
    
                List<Common.DataBinding.Document> MainMenu = new List<Common.DataBinding.Document>();
                MainMenu.Add(Spiele);
                documents.DataContext = MainMenu;
            }

    <common:LayoutAwarePage
        x:Name="pageRoot"
        x:Class="Homeserver.Documents"
        DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:Homeserver"
        xmlns:common="using:Homeserver.Common"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Page.Resources>
    
            <!-- TODO: Delete this line if the key AppName is declared in App.xaml -->
            <x:String x:Key="AppName">My Application</x:String>
        </Page.Resources>
    
        <!--
            This grid acts as a root panel for the page that defines two rows:
            * Row 0 contains the back button and page title
            * Row 1 contains the rest of the page layout
        -->
        <Grid Style="{StaticResource LayoutRootStyle}">
            <Grid.RowDefinitions>
                <RowDefinition Height="140"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <!-- Back button and page title -->
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
                <TextBlock x:Name="pageTitle" Grid.Column="1" Text="Dokumente" Style="{StaticResource PageHeaderTextStyle}"/>
            </Grid>
    
            <!-- Dokumentenansicht -->
            <GridView
                x:Name="documents"
                Margin="10"
                Grid.Row="1"
                SelectionMode="Multiple"
                IsSwipeEnabled="True"
                ItemsSource="{Binding}"
                CanDragItems="True"
                IsItemClickEnabled="True"
                ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                ScrollViewer.VerticalScrollBarVisibility="Auto"
                IsDoubleTapEnabled="False"
                AutomationProperties.AutomationId="ItemsGridView"
                AutomationProperties.Name="Items"
                ItemClick="Download_Item"
                Tag="{Binding}">
    
                <GridView.ItemTemplate>
                    <DataTemplate>
                            <Grid Height="110" MinWidth="1800" Margin="6">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110">
                                    <Image Source="{Binding Image}" Stretch="UniformToFill"/>
                                </Border>
                                <StackPanel Grid.Column="1" VerticalAlignment="Center" Margin="10,0,0,0">
                                    <TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}" FontSize="30" TextWrapping="NoWrap"/>
                                    <TextBlock Text="{Binding Create}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
                                    <TextBlock Text="{Binding Format}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
                                    <TextBlock Text="{Binding Path}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
                                </StackPanel>
                            </Grid>
                    </DataTemplate>
                </GridView.ItemTemplate>
                
            </GridView>
    
            <VisualStateManager.VisualStateGroups>
    
                <!-- Visual states reflect the application's view state -->
                <VisualStateGroup x:Name="ApplicationViewStates">
                    <VisualState x:Name="FullScreenLandscape"/>
                    <VisualState x:Name="Filled"/>
    
                    <!-- The entire page respects the narrower 100-pixel margin convention for portrait -->
                    <VisualState x:Name="FullScreenPortrait">
                        <Storyboard>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton" Storyboard.TargetProperty="Style">
                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PortraitBackButtonStyle}"/>
                            </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
    
                    <!-- The back button and title have different styles when snapped -->
                    <VisualState x:Name="Snapped">
                        <Storyboard>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton" Storyboard.TargetProperty="Style">
                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedBackButtonStyle}"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="pageTitle" Storyboard.TargetProperty="Style">
                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedPageHeaderTextStyle}"/>
                            </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
        </Grid>
    </common:LayoutAwarePage>
    

    Mittwoch, 14. Mai 2014 16:31
  • Das hat jetzt nichts mehr mit dem Auswälen des Items zu tun.

    In deinem Startposting befüllt du das DataGrid mit einer IEnumerable<common.databinding.document>-Liste. Das hat zur Folge, dass das SelectedItem vom Typ common.databinding.document ist. Wenn diese Klasse die ToString-Methode nicht überschreibt, gibt diese nur den Namen des Typs (Homeserver.Common.DataBinding+Document) zurück. Somit ist das ToString dort (beim Erstellen von Spiele) fehl am Platz.

    Ich weiß nicht was du genau vor hast, aber SelectedItem ist vom Typ deiner Klasse (document). Um an die Eigenschaften heran zu kommen, musst du nur einen Cast durchführen:

    var item = (common.databinding.document)documents.SelectedItem;

    Von item können nun sämtliche Eigenschaften abgefragt werden, die document besitzt.

    Da deine eigentliche Frage nun soweit beantwiortet ist, solltest du einen neuen Thread eröffnen. So bleibt die Übersicht dieser Frage gewahrt.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 14. Mai 2014 16:53
  • Leider geht es immer noch nicht :( Jetzt bekomme ich nur einen leeren String bei SelectedItem.

    Das Ziel soll es sein, dass die App aus einer XML-Datei auf dem Server alle abgespeicherten Dokumente meiner Datenbank liest und auflistet. Das Auflisten funktioniert ja einwandfrei. Nur nich das Auswählen.

    private void Download_Item(object sender, TappedRoutedEventArgs e)
            {
                var item = (Common.DataBinding.Document)documents.SelectedItem;
    
                Common.DataBinding.Document Spiele = new Common.DataBinding.Document { Title = item.ToString() };
    
                List<Common.DataBinding.Document> MainMenu = new List<Common.DataBinding.Document>();
                MainMenu.Add(Spiele);
                documents.DataContext = MainMenu;
            }
    So hab ich das jetzt geschrieben. Jetzt wird mir die Zeile die zweite Zeile gelb markiert mit dem Fehler, dass  item.ToString leer ist.
    Common.DataBinding.Document Spiele = new Common.DataBinding.Document { Title = item.ToString() };

    Mittwoch, 14. Mai 2014 20:32
  • Dir fehlen eindeutig die Grundlagen. Du darfst ToString nciht aufrufen, sondern musst eine richtige Eigenschaft abfragen!

    Ich kann mir zwar in groben Zügen vorstellen, was dein Code machen soll. Jedoch ist es nicht nachvollziehbar, wie du das ausgewälte Item weiter verarbeiten willst.

    Ich rate jetzt mal und sage, das du das ausgewählte Item nur in einer neuen Liste anzeigen willst. Dann müsste dein Code so aussehen:

    private void Download_Item(object sender, TappedRoutedEventArgs e)
            {
                var item = e.ClickedItem;
    
                List<Common.DataBinding.Document> MainMenu = new List<Common.DataBinding.Document>();
                MainMenu.Add(item);
                documents.DataContext = MainMenu;
            }

    Da der Debugger deinen Code anhält und meldet das item null ist, wurde noch kein Item ausgewählt. Das liegt daran, das du das markierte Item nicht gesetzt hast.

    Ohne den Code zu verstehen, wirst du nicht mehr weit kommen. Die Snytaktischen Elemente der Sprache scheinst du zu kennen. Die Funktionsweise aber scheinbar nicht vollständig.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 14. Mai 2014 20:52
  • Ja, du hast Recht. Mir fehlen die Grundlagen zu diesem Thema. Ich hatte mich eine Weile mit C# WPF beschäftigt, aber jetzt musste ich feststellen, dass es doch was anderes ist.

    Ich glaube, dass wi das nun hier abbrechen müssen, da wir hier nicht weiter kommen. An sich ist das Problem ja gelöst.

    Trotzde noch einmal vielen Dank für deine Hilfe und deine Geduld.

    Donnerstag, 15. Mai 2014 16:57
  • Ich habe das Problem jetzt gelöst/Ich habe eine tolle Anleitung gefunden :D

    private void Download_Item(object sender, ItemClickEventArgs e)
            {
                var item = ((Common.DataBinding.Document)e.ClickedItem).Title;
    
                Common.DataBinding.Document Spiele = new Common.DataBinding.Document { Title = item.ToString() };
    
                List<Common.DataBinding.Document> MainMenu = new List<Common.DataBinding.Document>();
                MainMenu.Add(Spiele);
                documents.DataContext = MainMenu;
            }

    Damit kann ich nun jeden Button einzeln auslesen. Trotzdem bedanke ich mich für deine Hilfe.

    Das habe ich für als Lösungshilfe verwendet: http://www.codeproject.com/Articles/599505/Databind-XML-Feed-in-Windows

    VG

    BlackRose2


    • Als Antwort markiert BlackRose2 Donnerstag, 15. Mai 2014 17:49
    • Bearbeitet BlackRose2 Donnerstag, 15. Mai 2014 18:23
    Donnerstag, 15. Mai 2014 17:49
  • Und das ist genau das was ich dir 2mal schrieb...
    Lese eine Eigenschaft des angeklickten Elements aus. Du hast Title ausgelesen.

    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Donnerstag, 15. Mai 2014 18:01