안녕하세요.
아직도 바인딩의 개념을 제대로 파악을 못했나봅니다.ㅠㅠ
일단 제가 사용하는 DataGrid의 DataContext는 UserControl의 ObservableCollection Provider 란 컬렉션을 갖고 있습니다.
그 안에 Column으로 Combobox를 사용하려고 합니다. 그런데 문제는
DataGrid의 내부에서 ComboBox ItemsSource로 접근하니까 당연히 바인딩이 안되는 문제가 발생하네요…
다시 말하자면,
CameraGridView.xaml
///////////////////////
<DataGrid Grid.Row="1"
ItemsSource="{Binding Provider"/>
CameraGridViewModel.cs
ObservableCollection<ItemViewModel> Provider
이렇게 되면 ComboBox의 ItemsSource는 당연히 ItemViewModel이란 컨텍스 내부에서 찾게 되는데요.
저는 CameraGridViewModel의 컨텍스트에서 찾고 싶은데 어떻게 하면 가능할까요?
CameraGridView.xaml
<UserControl.Resources>
<CollectionViewSource x:Key="CameraComboSource"
Source="{Binding CameraComboProvider}" />
</UserControl.Resources>
.
.
.
<DataGrid Grid.Row="1"
ItemsSource="{Binding Provider.CollectionEntity}"
Style="{StaticResource MaterialDesignDataGrid }"
AutoGenerateColumns="False"
EnableRowVirtualization="False"
CanUserSortColumns="True"
CanUserReorderColumns="False"
CanUserResizeColumns="True"
SelectionMode="Single"
SelectionUnit="FullRow"
SelectedItem="{Binding SelectedViewModel}"
CanUserAddRows="False"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
<DataGrid.Columns>
<DataGridTemplateColumn Header="카메라이름"
SortMemberPath="NameDevice"
CanUserSort="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding NameDevice, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox VerticalAlignment="Center"
IsEditable="False"
ItemsSource="{Binding Source={StaticResource CameraComboSource}}"
SelectedItem="{Binding NameDevice, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }" />
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
이렇게 해서 ComboBox의 ItemsSource를 위한 ObservableCollection을 바인딩 해주는 작업을 하고 staticResource로 접근해도 아무것도 안나오네요. 바인딩에러는 안뜹니다.
조언 부탁드립니다.