Laden...

[gelöst] Listbox Items

Erstellt von JustTom vor 15 Jahren Letzter Beitrag vor 15 Jahren 3.603 Views
JustTom Themenstarter:in
93 Beiträge seit 2008
vor 15 Jahren
[gelöst] Listbox Items

Hallo,

hab eigentlich eine simple Frage, komme allerdings nicht auf das was ich benötige.

Und zwar hab ich eine Listbox und eine DataTable welche gefüllt ist. Die Listbox binde ich an die DataTable:

listBox.DataContext = datatable;
listBox.DisplayMemberPath = "ObjectName";
listbox.SelectedValuePath = "ObjectID";

Und im WPF halt noch "<ListBox Name="listBox" ItemsSource="{Binding}">

Das funktioniert soweit auch. Allerdings wenn ich über:

listBox.Items[0]

...den Wert ausgeben möchte, habe ich dort nich die ObjectID die ich bräuchte. Wie bekomme ich das hin das es mir dort die "ObjectID" zurückgibt?

Hoffe meine Frage ist verständlich formuliert.

Gruß,
Tom

Gruß,
Tom

C
2 Beiträge seit 2005
vor 15 Jahren

Hallo Tom,

versuche es mal hiermit sollte funktionieren.

listBox.SelectedValue.ToString();

Gruß

Torsten

JustTom Themenstarter:in
93 Beiträge seit 2008
vor 15 Jahren

Hallo, danke für die Hilfe... klar funktioniert das aber ich bräuchte den Wert der Items und nicht des aktuell selektierten Items.

Gruß

Gruß,
Tom

S
341 Beiträge seit 2008
vor 15 Jahren

versuchs mal mit

listBox.Items[0].Subitems

oder Name oder oder oder 😁

da bekommst du die werte raus.
ich hoffe allerdings das ich dich richtig verstanden hab.

gruß

**Nur die Kenner können mit 10 Fingern bis 1023 zählen !!**
private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
JustTom Themenstarter:in
93 Beiträge seit 2008
vor 15 Jahren

Du meinst wohl das ich ein listbox item unter-items hat oder? das hab ich nicht gemeint. falls du was anderes gemeint hast, das property subitems gibts hier nicht aber ich gehe davon aus das du erstes gemeint hast?

Nochmal zu meinem Problem: Ich habe meine Listbox gefüllt mit Werten, jetzt möchte ich jedoch nicht auf den Wert des aktuell selektierten Items zugreifen sondern auf den Inhalt von listbox.Items_ ... verständlich? zB möchte ich auf Items_ und Items[i+1] zugreifen und die beiden vertauschen... daher benötige ich gesagtes. Hoffe nun ist es für jeden Verständlich.

Gruß,
Tom

Gruß,
Tom

3.430 Beiträge seit 2007
vor 15 Jahren

Hi,

so ganz verstanden habe ich dein Problem nicht.

Aber dieses CodeTeil:


var item = ListBox1.Items[1];
ListBox1.Items[1] = ListBox1.Items[0];
ListBox1.Items[0] = item;

vertauscht zwei Items miteinander.
Vielleicht kannst du daraus ja etwas entnehmen.

Gruss
Michael

//EDIT: Aber ich würde das mit dem DataBinding machen, damit du die ganzen Vorteile von WPF richtig ausnutzen kannst

JustTom Themenstarter:in
93 Beiträge seit 2008
vor 15 Jahren

Hast du da am besten was für mich, wie man am besten zB eine Combobox und eine Listbox bindet (dh ich wähle zB was in der Combobox aus, und zu der ID füllt es Werte in die Listbox)...?

Gruß,
Tom

Gruß,
Tom

V
86 Beiträge seit 2008
vor 15 Jahren

Ob es eine Combobox ist, oder sonst irgendein Control macht es kein Unterschied. mit Databinding kannst du über den DataContext = "{Binding Path=SelectedItem, ElementName=nameDesControls}" auf die Daten zugreifen. Evtl musst du diese Daten noch anpassen, ob mit dem IValueConverter, oder über ItemsSource, im Pronzip ist es immer das gleiche vorgehen. Am besten darüber mal im :rtfm: nachlesen.
Ansonsten gibt es dutzende von Blogs die genau dieses Thema behandeln. Ahja, nochwas, bei MSDN gibts Samples, die würden sich auch zum Anschauen lohnen.

3.430 Beiträge seit 2007
vor 15 Jahren

Hi,

normalerweise werden hier zwar keine kompletten Lösungen gepostet, aber ich will da mal eine Ausnahme machen =)


<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" Height="300" Width="300">
    <StackPanel>
		<ComboBox SelectionChanged="ComboBox_SelectionChanged" x:Name="c1"
				  DisplayMemberPath="Text"></ComboBox>
		<ListBox x:Name="l1" />
	</StackPanel>
</Window>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
	/// <summary>
	/// Interaktionslogik für Window1.xaml
	/// </summary>
	public partial class Window1 : Window
	{
		public Window1()
		{
			InitializeComponent();

			List<string> str1 = new List<string>();
			str1.Add("Hallo1");
			str1.Add("Hallo2");
			str1.Add("Hallo3");

			List<string> str2 = new List<string>();
			str2.Add("Seavas1");
			str2.Add("Seavas2");
			str2.Add("Seavas3");

			List<string> str3 =new List<string>();
					str3.Add("Hoi1");
			str3.Add("Hoi2");
			str3.Add("Hoi3");

			cData.Add(new ComboBoxData { Text = "HALLO",Items= str1});
			cData.Add(new ComboBoxData { Text = "Seavas",Items=str2 });
			cData.Add(new ComboBoxData { Text = "Hoi",Items=str3 });

			c1.ItemsSource = cData;
		}

		private List<ComboBoxData> cData = new List<ComboBoxData>();

		private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
		{
			if (c1.SelectedItem != null)
			{
				ComboBoxData item = c1.SelectedItem as ComboBoxData;
				l1.ItemsSource = item.Items;
			}
		}
	}

	public class ComboBoxData
	{
		private string text;
		private List<string> items = new List<string>();

		public List<string> Items
		{
			get { return items; }
			set { items = value; }
		}

		public string Text
		{
			get { return text; }
			set { text = value; }
		}

	}
}


Diese Anwendung müsste das machen, was du machen willst =)

Gruss
Michael

JustTom Themenstarter:in
93 Beiträge seit 2008
vor 15 Jahren

Hallo,

danke nochmal für die Hilfe. Es war allerdings nicht das was ich gesucht habe, konnte mich einfach nicht passend ausdrücken 😉

Falls jedoch trotzdem mal jemand hier auf den Thread kommt, folgende Seite in der Doku hat mir da weitergeholfen:

http://msdn.microsoft.com/en-us/library/aa480226.aspx

Gruß,
Tom