Это класс объектов:
public class FileManagement
{
public string FileId { get; set; }
public string FileName { get; set; }
public string TypeofFileName { get; set; }
}
Затем у меня есть список FileManagement
объектов, и в моем конструкторе я группирую элементы по FileName
следующим образом
IEnumerable<IGrouping<string, FileManagement>> GroupedList = FileList.GroupBy(p => p.FileName ).OrderBy(x => x.Key);
Я группирую их, потому что есть больше объектов с тем же свойством FileName
, но с разными FileId
и TypeofFileName
.
Я объявил IGrouping<string, FileManagement> SelectedFileType
, который установлен с выбранным элементом введите IGrouping<string, FileManagement>
в первом ComboBox из XAML ниже.
<ComboBox ItemsSource="{Binding GroupedList }" SelectedItem="{Binding SelectedFileType}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}: {1}">
<Binding Path="Key"/>
<Binding Path="???some sort of string.Join"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox ItemsSource="{Binding SelectedFileType}" DisplayMemberPath="TypeofFileName"></ComboBox>
Второй ComboBox содержит свойство TypeofFileName
всех элементов в выбранном IGrouping<string, FileManagement>
из первого ComboBox. Это работает как задумано.
Но я также хочу установить следующую строку как DisplayMemberPath для первого ComboBox: «group_FileName: TypeofFileName1, TypeofFileName2, TypeofFileName3», где group_FileName - это имя ключа / группы, за которым следует имя Свойство TypeofFileName всех элементов этой группы (например, string.Join
).
По сути, я хочу поместить в DisplayMemberPath имя группы и встроенные элементы группы.
Я думаю об использовании MultiBinding и string.Join(", ", SelectedFileType.ToList().Select(x => x.TypeofFileName))
но я не знаю, как правильно использовать его в связывании. Есть ли способ сделать это?