将ItemsSource的每个项目绑定到不同的ItemsSource

时间:2017-01-12 20:56:55

标签: c# wpf


遇到一点麻烦。我有一个DataGrid,它绑定到一个对象列表。其中一个对象属性是一个Icon(它是一个字符串)。当在DataGrid中显示对象时 - 我有一个ComboBox(假设持有一个静态的Icons列表)。我不知道如何绑定的东西是图标集合的itemssource。以下是我到目前为止的情况:
XAML

    <DataGrid Name="dgMenus"
              Grid.Column="1"
              Grid.Row="1"
              Visibility="Collapsed"
              CanUserSortColumns="True"
              Style="{StaticResource DataGrid}">
    ...

    <DataGridTemplateColumn Header="Icon"
                            Width="Auto"  
                            IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox Name="cbIconSelector"
                                  Style="{StaticResource ComboBoxFlatStyle}"   
                                  SelectionChanged="cbIconSelector_SelectionChanged"
                                  ItemsSource="{Binding iconsLibrary}"
                                  SelectedIndex="{Binding Icon, Converter={StaticResource FontAwesome_HTML_To_ComboBox_SelectedIndex}}"
                                  BorderThickness="0"
                                  Width="60"
                                  Height="30"
                                  VerticalAlignment="Center">
                            <ComboBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Style="{StaticResource FontAwesome}"
                                               Text="{Binding XML}"
                                               Margin="2"/>
                                </DataTemplate>
                            </ComboBox.ItemTemplate>
                        </ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

    ...
    </DataGrid>

C#

dgMenus.ItemsSource = _viewmodel._menusForDisplay;
iconsLibrary = new FontAwesomeLibrary().icons;


非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

使其工作的方法是将一个Loaded事件设置为ComboBox,并在那里设置所需的ItemsSource。