제네릭 목록은 미세 구조체의 목록을 작동했다WPF 데이터 바인딩 <>
대신 구조체의 클래스를 사용하는 경우 SLOVED
해결이 해결
즉
public class Person
{
public string Name { get; set;}
public string ID { get; set;}
}
instead of
public struct Person
{
public string Name;
public string ID;
}
나는 뭔가 잘못하고 있습니다. 당신은 그것이 어떻게되는지 압니다.
ItemsSource, DataContext, DisplayMemberPath 및 SelectedValuePath를 가지고 놀아 보았습니다. 그리고 Person 개체에서 호출되는 ToString 메서드 목록의 빈 목록을 얻습니다.
정말 도움이 될만한 답변은 누군가가이 예에서 효과가있는 답변을 게시하는 것입니다.
제네릭을 데이터 바인딩하는 데 일반적으로 어려움이 있으므로 문제를 단순화했습니다.
저는 개인의 간단한 일반 목록을 만들고이를 콤보에 바인딩하려고합니다. (또한 ListView를 사용해보십시오).
I 중 하나를 공백의 목록 또는 = 코드에서 네임 스페이스
<Window x:Class="BindingGenerics.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="300">
<Grid>
<ComboBox Name="ComboBox1"
ItemsSource="{Binding}"
Height="50"
DisplayMemberPath="Name"
SelectedValuePath="ID"
FontSize="14"
VerticalAlignment="Top">
</ComboBox>
</Grid>
</Window>
using System.Windows;
using System.ComponentModel;
namespace BindingGenerics
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Person p = new Person();
// I have tried List and BindingList
//List<Person> list = new List<Person>();
BindingList<Person> list = new BindingList<Person>();
p.Name = "aaaa";
p.ID = "1111";
list.Add(p);
p = new Person();
p.Name = "bbbb";
p.ID = "2222";
list.Add(p);
p = new Person();
p.Name = "cccc";
p.ID = "3333";
list.Add(p);
p = new Person();
p.Name = "dddd";
p.ID = "4444";
list.Add(p);
ComboBox1.DataContext = list;
}
}
public struct Person
{
public string Name;
public string ID;
}
}
나는 샘플을 시험해 보았고 그것은 저에게 효과적입니다. 단, dddd는 여러 번 표시됩니다. –