У меня есть ViewModel со свойством, которое является экземпляром класса.Когда я редактирую указанную ViewModel, у меня есть ComboBox, динамически связанный с коллекцией класса.Проблема заключается в том, что если у элемента есть экземпляр перед редактированием, шаблон ItemTemplate не будет применен, пока я не выберу и не разверну ComboBox.
Поэтому, когда я открываю всплывающее окно Edit, элемент, появляющийся в comboBox, равен myProject.myNameSpace.Type
но как только я щелкаю ComboBox, он превращается в NameOfType SomeInfo
, как и должно быть.
XAML:
<ComboBox Grid.Column="1"
Width="Auto"
HorizontalAlignment="Left"
VerticalAlignment="Top"
SelectedItem="{Binding Path=Type, Mode=TwoWay}"
ItemsSource="{Binding Path=AvailableTypes}"
TextSearch.TextPath="TypeName"
IsTextSearchEnabled="True"
IsEditable="True" >
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Margin="4"
Text="{Binding Path=TypeName}" />
<TextBlock Margin="4"
Text="{Binding Path=TypeInfo}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}"
Foreground="Red">
</TextBlock>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ComboBox.GroupStyle>
C #:
private ListCollectionView _availableTypes;
public ListCollectionView AvailableTypes
{
get
{
if (_availableTypes == null)
{
_availableTypes = new ListCollectionView(Context.GetAllTypes());
_availableTypes.GroupDescriptions.Add(new PropertyGroupDescription("Category"));
}
return _availableTypes;
}
}
public TypeClass Type
{
get { return Model.Type; }
set
{
Model.Type = value;
RaisePropertyChanged("Type");
}
}