2 열 4 행 응용 프로그램에서 DataGrid가 있습니다. 각 셀은 WPF Toolkit 자동 완성 상자 컨트롤이어야합니다. MVVM 패턴을 사용하여 모든 것을 구현하고 싶습니다. 이 텍스트 상자 세포를 채우기 위해 쉽게 :자동 완성 상자를 DataGrid에 어떻게 추가합니까?
<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
어떤 아이디어?
업데이트 : 다음은 @Damascus 응답을 기반으로 한 전체 XAML입니다. 어떤 이유로 든 작동하지 않습니다.
<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>
(지금으로 볼 것이다 작업중인 하나 인
UserControl
의 DataContext에) XAML이 작동하려면'AvailableFields'는'Fields'의 자식이어야하고,'Key' 및'Value'와 마찬가지로 TextBox 예제의 경우'Fields'의 자식입니다. – publicgk그래서 자동 완성을위한 ItemsSource가 Fields의 자식이 아니게 만들 수 있습니까? – dulli