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
Hallo Tom,
versuche es mal hiermit sollte funktionieren.
listBox.SelectedValue.ToString();
Gruß
Torsten
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
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ß
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
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
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
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
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.
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
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:
Gruß,
Tom