XAML의 내 ComboBox
을 코드 뒤에있는 List
모음의 사용자 지정 개체 모음에 바인딩하려고합니다.WPF : ComboBox가 데이터 대신 "(네임 스페이스). (클래스 이름)"을 표시합니다.
현재 ComboBox
은 각각 dpwpf.Contact
인 내 {namespace}.{classname}
의 항목을 나열합니다.
목록에 표시하려면 XAML에 무엇을 입력해야합니까? 예 : 성 + 이름?
나는 그것이 {Binding Path=... Value=...}
와 같은 것이지만 나는 그것을 얻을 수 없다는 것을 알고있다.
XAML :
<Window x:Class="dpwpf.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>
<StackPanel>
<TextBlock Text="Select the contact:"/>
<ComboBox Name="theContactList"/>
</StackPanel>
</StackPanel>
</Window>
코드 뒤에 :
namespace dpwpf
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
StoreDB db = new StoreDB();
List<Contact> contacts = db.GetContacts()
theContactList.ItemsSource = contacts.ToList();
}
}
}
답변 :
<Window x:Class="dpwpf.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"
xmlns:local="clr-namespace:dpwpf">
<Window.Resources>
<DataTemplate DataType="{x:Type local:Contact}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding LastName}"/>
<TextBlock Text=" "/>
<TextBlock Text="{Binding FirstName}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<StackPanel>
<StackPanel Margin="10">
<TextBlock Text="Contact Name:" Foreground="#555"/>
<TextBox Name="theName"/>
</StackPanel>
<StackPanel>
<TextBlock Text="Select the contact:"/>
<ComboBox Name="theContactList"/>
</StackPanel>
</StackPanel>
</Window>
[WPF는 IsEditable = 개체 가득 참 콤보가 선택한 항목)에게 있으며, toString (표시]의 가능한 복제 (https://stackoverflow.com/questions/1844156/wpf- :
그 예를 참조 iseditable-true-combobox-filled-with-objects-displays-the-to-string-as-the) –