Привет Всем профи WPF и просто программерам.
Не давно пользую WPF и столкнулся с такой задачей. Сам пробовал по разному... перерыл и RSDN и MSDN и google.
но ответа пока не нашел. Может кто посодействует
Есть база данных состоящая из двух связанных таблиц.
Их описание
Messages { *ID :int, Company: int, Message:string}
Companies { *ID:int, Name:string }
* — это поле образует первичный ключ, Есть join по полю Message.Company = Company.ID;
В WPF используется следующие CollectionViewSources
<Window x:Class="Window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
>
<Window.Resources>
<CollectionViewSource x:Key="companiesViewSource"
Source="{Binding Path=Companies, Source={StaticResource mainDataSet}}" />
</Window.Resources>
<Grid DataContext="{StaticResource mainViewSource}">
<DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}"
Name="mainViewDataGrid"
IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn x:Name="iDColumn" Binding="{Binding Path=ID}" Header="№ п/п"
Width="SizeToHeader" MinWidth="40" IsReadOnly="True"/>
<DataGridComboBoxColumn x:Name="companyColumn" Header="Компания" Width="SizeToHeader"
ItemsSource="{Binding Source={StaticResource companiesViewSource}}"
SelectedValuePath="ID"
DisplayMemberPath="Name"
SelectedValueBinding="{Binding Path=Company}"
IsReadOnly="True" MinWidth="50"/>
<DataGridTextColumn x:Name="messageColumn" Binding="{Binding Path=Message}"
Header="Сообщение" Width="SizeToHeader" IsReadOnly="True" MinWidth="50" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
В файле App.xaml имеем следующие объявления
<Application.Resources>
<my:MainDataSet x:Key="mainDataSet" />
</Application.Resources>
Все работает замечательно, за исключением сортировки по полю companyColumn. Тут сортировка идет не по символьному полю Companies.Name базы данных, а по числовому полю Messages.Company , что и не удивительно.
Как прикрутит
правильную сортировку?
Спасибо за внимание и понимание