在Silverlight DataGrid中的单元格中设置ComboBox的数据源

时间:2009-08-29 11:43:33

标签: silverlight datagridview combobox datasource

我有一个gridview,其中的列将其数据绑定到Datagrid.DataContext中的Page_Loaded

private void Shema_Loaded(object sender, RoutedEventArgs e)
{
    GridName.DataContext = AllPdiLines;
}

我想要一个网格,其中每一行中的一个单元格包含一个带有可选值的组合框,然后在选中时绑定到数据网格数据源。应该很容易,但是不能绑定组合框的itemscollection。

xaml看起来像这样:

<data:DataGrid x:Name="GridName" 
ItemsSource="{Binding}"                 
AutoGenerateColumns="False"
SelectionMode="Single"
ScrollViewer.VerticalScrollBarVisibility="Auto" 
ScrollViewer.HorizontalScrollBarVisibility="Auto" 
Margin="4">
<data:DataGrid.Columns>
    <data:DataGridTemplateColumn Header="First name">
        <data:DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <TextBox Text="{Binding FirstName,Mode=TwoWay}"/>
            </DataTemplate>
        </data:DataGridTemplateColumn.CellEditingTemplate>
    </data:DataGridTemplateColumn>
    <data:DataGridTemplateColumn Header="LastName" CanUserSort="True">
        <data:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBox Text="{Binding LastName,Mode=TwoWay}"/>
            </DataTemplate>
        </data:DataGridTemplateColumn.CellTemplate>
    </data:DataGridTemplateColumn>
    <data:DataGridTemplateColumn Header="Country">
        <data:DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <ComboBox x:Name="cbxQ" IsEnabled="True"
                    SelectedItem="{Binding Country,Mode=TwoWay}" 
                    ItemsSource="{Binding Countries, Source={StaticResource CountryDataSource}}" 
                    ItemTemplate="{StaticResource CountryListTemplate}"/>
            </DataTemplate>
        </data:DataGridTemplateColumn.CellEditingTemplate>
    </data:DataGridTemplateColumn>                              
</data:DataGrid.Columns>

因此,我为DataGrid设置了DataContext,并且两个第一列绑定得很好,但是如何在每行的ComboBox中为可选值设置数据源。

问候 的Øyvind

1 个答案:

答案 0 :(得分:0)

什么是CountryDataSource?由于多种原因,您无法将DomainDataSource与Comboboxes一起使用。您可以使用comboboxextensions包并使用comboboxdatasource。如果将其绑定到网格定义中的数据源,它将起作用。

此处有更多详情 - http://blogs.msdn.com/b/kylemc/archive/2010/06/18/combobox-sample-for-ria-services.aspx