데이터 그리드가 있고이 예에서는 하나의 열만 있습니다.DataGridTemplateColumn을 ComboBox로 정렬
<DataGrid x:Name="grdMainGrid">
<DataGridTemplateColumn Header="Room" CanUserSort="True" SortMemberPath="DisplayText" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=AllRooms, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" Height="20" SelectedValuePath="Code" SelectedValue="{Binding Path=RoomCode, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="DisplayText" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid>
데이터 격자의 ItemsSource가 목록으로 설정 :이 열은 DataGridTemplateColumn입니다
DataGridTemplateColumn의 콤보 상자의 ItemsSource가 내 윈도우의 속성에 바인딩public class InsertableRecord
{
public int RoomCode { get; set; }
}
:
public List<Room> AllRooms
{
get;
private set;
}
다음은 "방"클래스의 정의입니다.
public partial class Room
{
public string ID { get; set; }
public string Description { get; set; }
public string DisplayText
{
get
{
return this.ID + " (" + this.Description + ")";
}
}
}
"ReservableRecord"가 아닌 "Room"의 속성 인 DisplayText로 설정된 SortMemberPath를 갖게됩니다. 그래서 분명히, "DisplayText"속성이 "InsertableRecord"개체에 존재하지 않는다는 것을 말하는이 열을 정렬하려고하면 바인딩 오류가 발생합니다.
현재 ComboBox의 텍스트 (또는 Room 개체의 DisplayText 속성 둘 다 작동합니다)를 기준으로 열을 정렬하는 방법은 무엇입니까?