1
사용자 지정 클래스 항목 목록이 있습니다. 이 클래스는 두 개의 문자열 값을 가진 다른 클래스의 관찰 가능한 컬렉션을 포함합니다. 다른 문자열을 기반으로 문자열 값 중 하나에 데이터 바인딩을 수행하려고합니다. 그래서 가상의 예로서 :Observable 컬렉션을 포함하는 클래스 목록에 대한 데이터 바인딩 목록 상자
public class Person
{
public string Name { get; set; }
public ObservableCollection<Pet> Pets { get; set; }
}
public class Pet
{
public string AnimalType { get; set; }
public string Name { get; set; }
}
내가 그 사람의 목록에 목록 상자를 바인딩 :
List<Person> people = new List<Person>();
Person p = new Person() { Name = "Joe", Pets = new ObservableCollection<Pet>() { new Pet() { Name = "Spot", AnimalType = "Dog" }, new Pet() { Name = "Whiskers", AnimalType = "Cat" } } };
people.Add(p);
p = new Person() { Name = "Jim", Pets = new ObservableCollection<Pet>() { new Pet() { Name = "Juniper", AnimalType = "Cat" }, new Pet() { Name = "Butch", AnimalType = "Dog" } } };
people.Add(p);
p = new Person() { Name = "Jane", Pets = new ObservableCollection<Pet>() { new Pet() { Name = "Tiny", AnimalType = "Dog" }, new Pet() { Name = "Tulip", AnimalType = "Cat" } } };
people.Add(p);
MyListBox.ItemsSource = people;
을 나는, 사람과 애완 동물 이름의 이름을 바인딩 할 동물을 입력하면 개야. 인덱서를 사용하여 바인드를 할 수 있다는 것을 알고 있지만 애완 동물 컬렉션의 두 번째 항목 인 경우에도 특히 강아지 항목이 필요합니다.
이 <ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Height="55.015" Width="302.996">
<TextBlock TextWrapping="Wrap" Text="{Binding Name}" Height="25.015" VerticalAlignment="Top" Margin="0,0,8,0"/>
<TextBlock Text="{Binding Pets[0].Name}"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
사람이 나는 방법에 대한 몇 가지 방향을 제공 할 수 있습니다 개가 colelction에서 두 번째 항목이 때문에 XAML은 아래의 컬렉션의 첫 번째 항목을 표시하기 위해 작동하지만, 목록의 두 번째 항목은 잘못 이것을 성취 할 수 있습니까?
감사합니다. 컨버터 매개 변수를 일반화 된 상태로 유지할 수있는 것처럼 보입니다. 그래서 이것이 꼭 필요한 것입니다. –