locked
Details meiner Daten aus einer ListBox in einem PopUp anzeigen? RRS feed

  • Frage

  • Hi,

    ich würd gern folgendes machen:

    ich habe eine listbox in der die titel meiner daten anzezeigt werden. nun klicke ich auf einen dieser titel, ein popup geht auf und dort stehen dann alle weiteren infos zu diesem titel. ich habe ein childWindow fürs popup benutzt, bloß meine daten werden nicht angezeigt...kann mir jemand nen rat geben? hier mein code:

    mainPage.xaml.cs:

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace SilverlightApplication4
    {
    	public partial class MainPage : UserControl
    	{
    		public MainPage()
    		{
    			// Für das Initialisieren der Variablen erforderlich
    			InitializeComponent();
    		}
    
    		private void listBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    		{
    			// TODO: Ereignishandlerimplementierung hier einfügen.
    
    				DetailWindow popup = new DetailWindow();
    				popup.Show();
    		
    		}
    	
    	}
    }
    

     

    mainpage.xaml:

     

    <UserControl
    	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    	xmlns:local="clr-namespace:SilverlightApplication4" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" mc:Ignorable="d"
    	x:Class="SilverlightApplication4.MainPage"
    	Width="640" Height="480">
    	<UserControl.Resources>
    		<DataTemplate x:Key="ListItemTemplate">
    			<StackPanel>
    				<TextBlock Text="{Binding Title}"/>
    			</StackPanel>
    		</DataTemplate>
    		<DataTemplate x:Key="ListItemTemplate1">
    			<StackPanel>
    				<TextBlock Text="{Binding Title}"/>
    			</StackPanel>
    		</DataTemplate>
    		<DataTemplate x:Key="ListItemTemplate2">
    			<StackPanel>
    				<TextBlock Text="{Binding Title}"/>
    			</StackPanel>
    		</DataTemplate>
    		<DataTemplate x:Key="DataTemplate1">
    			<Grid>
    				<TextBlock TextWrapping="Wrap" Text="{Binding Title}" d:LayoutOverrides="Width, Height"/>
    			</Grid>
    		</DataTemplate>
    		<DataTemplate x:Key="ListItemTemplate3">
    			<StackPanel>
    				<TextBlock Text="{Binding Title}"/>
    			</StackPanel>
    		</DataTemplate>
    	</UserControl.Resources>
    
    
    
    <Grid Background="#FF5C7590" ShowGridLines="false" DataContext="{Binding Source={StaticResource Dokumente_SampleSampleDataSource}}">
    	<Grid.RowDefinitions>
    		<RowDefinition Height="40" />
    		<RowDefinition Height="*" />		
    	</Grid.RowDefinitions>
    	
    	
    	
    <ListBox x:Name="listBox" Grid.Row="1" ItemsSource="{Binding ListItemCollection}" Margin="5" SelectionChanged="listBox_SelectionChanged">
    <ListBox.ItemTemplate>
    	<DataTemplate>
    		<StackPanel Orientation="Horizontal">
    			<StackPanel Style="{StaticResource Panel}">
    				<TextBlock Text="ID" Style="{StaticResource SubBlock}" />	
    				<TextBlock Cursor="Hand" Text="{Binding ID}" Style="{StaticResource IDBlock}" />					
    			</StackPanel>
    		<TextBlock Cursor="Hand" Text="{Binding Title}" Style="{StaticResource TitleBlock}"/>
    		</StackPanel>
    	</DataTemplate>	
    </ListBox.ItemTemplate>
    </ListBox>	
    
    </Grid>
    
    </UserControl>
    

     

    detailWindow.xaml.cs:

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace SilverlightApplication4
    {
     public partial class DetailWindow : ChildWindow
     {
     public DetailWindow()
     {
      InitializeComponent();
     }
    		
     private void OKButton_Click(object sender, RoutedEventArgs e)
     {
      this.DialogResult = true;
     }
    
     private void CancelButton_Click(object sender, RoutedEventArgs e)
     {
      this.DialogResult = false;
     }
     }
    }
    
    

     

    detailWindow.xaml:

    <sdk:ChildWindow	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    	xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"	
    	x:Class="SilverlightApplication4.DetailWindow"
    	xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
     	Title="DetailWindow"
    	Width="400" Height="300">
    	<Grid x:Name="LayoutRoot">
    		<Grid.ColumnDefinitions>
    			<ColumnDefinition />
    			<ColumnDefinition />
    		</Grid.ColumnDefinitions>
    		<Grid.RowDefinitions>
    			<RowDefinition Height="Auto" />
    			<RowDefinition Height="Auto" />
    			<RowDefinition Height="*" />
    			<RowDefinition Height="Auto" />
    		</Grid.RowDefinitions>
    	<TextBlock Text="{Binding Title}" FontSize="20" Foreground="#000" FontWeight="Bold" Grid.Column="1" />
    	<HyperlinkButton Content="{Binding FileRef}" TargetName="_new" NavigateUri="{Binding FileRef}"
    	 FontSize="12" Margin="0,0,0,5" Grid.Column="1" IsTabStop="False"/>
    	<TextBlock Text="{Binding Betreuer}" FontSize="12" Margin="0,0,0,5" Grid.Column="1" /> 
    	
    		<Button x:Name="OKButton" Content="OK" Click="OKButton_Click" Width="75" Height="23" Margin="0,0,79,0" HorizontalAlignment="Right" Grid.Row="1" />
    		<Button x:Name="CancelButton" Content="Cancel" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Grid.Row="1" />
    	</Grid>
    </sdk:ChildWindow>
    
    

     

     

    Mittwoch, 8. Dezember 2010 21:49

Antworten

  • Ok, da ich im Moment kein Beispiel dafür habe um es zu testen, versuch mal den DataContext des Popup auf das SelectedItem des ListBox zu setzen und nimm im Binding des ChildWindows das "SelectedItem." wieder raus.
    • Als Antwort markiert M4nTis Freitag, 10. Dezember 2010 13:45
    Donnerstag, 9. Dezember 2010 14:10
    Beantworter

Alle Antworten

  • Du musst den DataContext des UserControls an das ChildWindow übergeben, sonst weiß das Binding im ChildWindow nicht worher die Daten kommen sollen.
    Donnerstag, 9. Dezember 2010 07:45
    Beantworter
  • ... und vielleicht solltest Du die Erzeugung der Variablen, die das ChildWindow hält ("popup"), aus der Ereignisbehandlung von listbox_SelectionChanged herausnehmen und global erzeugen.
    Donnerstag, 9. Dezember 2010 08:18
  • Hi,

    ich habe es wie folgt versucht:

    		private void listBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    		{
    			// TODO: Ereignishandlerimplementierung hier einfügen.
       	popup.DataContext = listBox.DataContext;
       	popup.Show();		
    		}
    

     

    allerdings funktionierts so nicht! könntest du mir noch etwas genauer sagen, wie ich den DataContext übergeben kann?

    Thx,

    Flo

    Donnerstag, 9. Dezember 2010 12:07
  • Probier mal das Binding in dem ChildWindows auf

    Text="{Binding SelectedItem.Title}"
    
    zu ändern
    Donnerstag, 9. Dezember 2010 12:59
    Beantworter
  • habs geändert, hat aber keine auswirkungen...
    Donnerstag, 9. Dezember 2010 13:10
  • Ok, da ich im Moment kein Beispiel dafür habe um es zu testen, versuch mal den DataContext des Popup auf das SelectedItem des ListBox zu setzen und nimm im Binding des ChildWindows das "SelectedItem." wieder raus.
    • Als Antwort markiert M4nTis Freitag, 10. Dezember 2010 13:45
    Donnerstag, 9. Dezember 2010 14:10
    Beantworter
  • Jawoll! Super, hat geklappt! Danke für deine Mühen!!! ^^
    Freitag, 10. Dezember 2010 13:45