В моем приложении есть сетка данных с двумя столбцами и 4 строками.Каждая из ячеек должна быть элементом управления автозаполнением WPF Toolkit.Я хотел бы реализовать все это с использованием шаблона MVVM.Легко заполнить ячейки текстовыми полями:
<DataGrid ItemsSource="{Binding viewModel, Path=Fields}" AutoGenerateColumns="False" CanUserResizeColumns="True" CanUserSortColumns="True" AlternatingRowBackground="Gainsboro">
<DataGrid.Columns>
<DataGridTextColumn Header="Predicate" Binding="{Binding Key}"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}"/>
</DataGrid.Columns>
</DataGrid>
Но попытка сделать то же самое с полями автозаполнения по какой-то причине не работает.Он компилируется и запускается, но окно автозаполнения не открывается при вводе.Я использовал:
<DataGrid ItemsSource="{Binding viewModel, Path=Fields}" AutoGenerateColumns="False" CanUserResizeColumns="True" CanUserSortColumns="True" AlternatingRowBackground="Gainsboro">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Pre">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<wpfToolkit:AutoCompleteBox ItemsSource="{Binding viewModel, Path=AvailableFields}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Определения связанных свойств:
public IEnumerable<KeyValuePair<string, string>> Fields
public IEnumerable<string> AvailableFields
Есть идеи?
Обновление :весь XAML на основе ответа @Damascus.По какой-то причине тоже не работает.
<UserControl x:Class="IKB.Views.IKBInputView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:IKB.ViewModels"
xmlns:wpfToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<vm:IKBInputVM x:Key="viewModel" />
</UserControl.Resources>
<StackPanel Orientation="Vertical">
<DataGrid ItemsSource="{Binding viewModel, Path=Fields}" AutoGenerateColumns="False" CanUserResizeColumns="True" CanUserSortColumns="True" AlternatingRowBackground="Gainsboro">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Pre">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<wpfToolkit:AutoCompleteBox ItemsSource="{Binding DataContext.viewModel.AvailableFields, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</UserControl>