В настоящее время я работаю над приложением WPF. NET 4.7 и использую элементы управления Infragistics WPF версии 18.
Мне нужно создать пользовательский XamComboEditor
с XamDataTree
внутри. Таким образом, ComboBox с выделением Tree внутри.
Выбор Tree прекрасно работает без XamComboEditor и выглядит следующим образом:
<iWPF:XamDataTree ItemsSource="{Binding Locations}">
<iWPF:XamDataTree.GlobalNodeLayouts>
<iWPF:NodeLayout Key="Locations" TargetTypeName="LocationViewModel" DisplayMemberPath="Name"/>
<iWPF:NodeLayout Key="ChildLocations" TargetTypeName="string"/>
</iWPF:XamDataTree.GlobalNodeLayouts>
</iWPF:XamDataTree>
Мой XamDataTree связан с наблюдаемой коллекцией Locations
:
public ObservableCollection<LocationViewModel> Locations { get; set; } = new ObservableCollection<LocationViewModel>();
public class LocationViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public List<LocationViewModel> ChildLocations { get; set; } = new List<LocationViewModel>();
}
Мне нужно использовать установщик стилей на моем XamComboEditor
, чтобы поместить XamDataTree
в поле со списком.
Моя проблема сейчас в том, что я не знаю, как этого достичь или как передать контекст от XamComboEditor
дальше к XamDataTree
.
Я пробовал следующее, напрасно:
<iWPF:XamComboEditor ItemsSource="{Binding Locations}">
<iWPF:XamComboEditor.ComboBoxStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<iXaml:XamDataTree ItemsSource="{Binding .}">
<iXaml:XamDataTree.GlobalNodeLayouts>
<iXaml:NodeLayout Key="Locations" TargetTypeName="LocationViewModel" DisplayMemberPath="{Binding Name}"/>
<iXaml:NodeLayout Key="ChildLocations" TargetTypeName="string"/>
</iXaml:XamDataTree.GlobalNodeLayouts>
</iXaml:XamDataTree>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</iWPF:XamComboEditor.ComboBoxStyle>
</iWPF:XamComboEditor>
Знаете ли вы, как решить эту проблему? Знаете ли вы, как передать контекст данных из родительского элемента управления, скажем, в дочерний элемент управления? Или, скорее, как поместить XamDataTree
внутрь XamComboEditor
?