Разбираюсь с WPF
2-й день не могу решить задачу:
Есть ListBox.
Есть 2 списковых объекта
1-й объект: список из (Имя, Фамилия, Город(ID,имя города))
2-й объект: список городов(ID,имя города)
К ListBox сделан Binding 1-го объекта. Для отображения полей использован Template состоящий из 2-х TextBox и ComboBox.
Вопрос как сделать так, чтобы Combobox имел список элементов = 2-й объект, а выбранный элемент передавался бы как значение в 1-й
То, как у меня сейчас (список не заполняется)
- Код: Выделить всё
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="My First WPF Application" Height="350" Width="782" Name="win1"
x:Class="MainWindow">
<Window.Resources>
<CollectionViewSource Source="{Binding Source={x:Static Application.Current}, Path=TownList}" x:Key="TownList" />
</Window.Resources>
<Grid>
<ListBox Name="ListBox1" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="#FFA3A3A3" Margin="10" DataContext="{Binding}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox x:Name="FstName"
Text="{Binding FName, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
Grid.Column="0"
/>
<TextBox x:Name="LstName"
Text="{Binding LName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Grid.Column="1"
/>
<ComboBox x:Name="cmbList"
ItemsSource ="{Binding Source={StaticResource TownList}}"
DisplayMemberPath="Name"
SelectedValuePath="Name"
SelectedValue="{Binding Town}"
Grid.Column="2" ItemStringFormat=" {0} " />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
- Код: Выделить всё
Class MainWindow
Public PersonList As New List(Of Person)
Public TownList As New List(Of Town)
Public Sub New()
' Этот вызов является обязательным для конструктора.
InitializeComponent()
' Добавьте все инициализирующие действия после вызова InitializeComponent().
PersonList.Add(New Person("Чундра", "Чучундра"))
PersonList.Add(New Person("Чундра2", "Чучундра2"))
PersonList.Add(New Person("Чундра3", "Чучундра3"))
TownList.Add(New Town(1, "Москва"))
TownList.Add(New Town(2, "Питер"))
TownList.Add(New Town(3, "Смоленск"))
TownList.Add(New Town(4, "Новгород"))
TownList.Add(New Town(5, "Кривой Рог"))
TownList.Add(New Town(6, "Киев"))
Me.DataContext = PersonList
End Sub
End Class
Public Class Person
Private _fName As String
Sub New(ByVal _f As String, ByVal _l As String)
_fName = _f
_lName = _l
End Sub
Public Property FName() As String
Get
Return _fName
End Get
Set(ByVal value As String)
_fName = value
End Set
End Property
Private _lName As String
Public Property LName() As String
Get
Return _lName
End Get
Set(ByVal value As String)
_lName = value
End Set
End Property
Private _town As Town
Public Property Town() As Town
Get
Return _town
End Get
Set(ByVal value As Town)
_town = value
End Set
End Property
End Class
Public Class Town
Sub New(ByVal i As Integer, ByVal n As String)
_id = i
_name = n
End Sub
Private _id As Integer
Public Property id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
Заранее спасибо за советы