在视图模型中将组合框绑定到集合

时间:2014-03-06 08:10:22

标签: silverlight xaml mvvm

我在数据网格中有一个组合框。 Datagrid绑定到项目源。我希望将组合框填充到除其父集合之外的集合中,但它不起作用。

<data:DataGrid x:Name="dgTransferStockroomGLDetails" AutoGenerateColumns="False" ColumnHeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
                               VerticalScrollBarVisibility="Visible" ItemsSource="{Binding StockroomTransferDetails, Mode=TwoWay}"
                               CanUserResizeColumns="False" VerticalAlignment="Top" RowBackground="White" AlternatingRowBackground="White" GridLinesVisibility="All" Height="400">
                    <data:DataGrid.Columns>
                        <data:DataGridTemplateColumn Header="From Stockroom" Width="200" CanUserReorder="True" CanUserSort="True" IsReadOnly="False">
                            <data:DataGridTemplateColumn.HeaderStyle>
                                <Style TargetType="prim:DataGridColumnHeader">
                                    <Setter Property="HorizontalContentAlignment" Value="Center"/>
                                    <Setter Property="FontWeight" Value="Bold"/>
                                </Style>
                            </data:DataGridTemplateColumn.HeaderStyle>
                            <data:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                <!--<TextBox Text="{Binding From_Stkrm_Id}" Width="200" Height="30" />-->
                                <ComboBox Width="200" Height="30" ItemsSource="{Binding WiingsStkrmList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Name" />
                                </DataTemplate>

                            </data:DataGridTemplateColumn.CellTemplate>
                        </data:DataGridTemplateColumn>
 </data:DataGrid.Columns>
                </data:DataGrid>

这是我的视图模型

private ObservableCollection<BuyerWebService.Stockroom> wiingsStkrmList;
        public ObservableCollection<BuyerWebService.Stockroom> WiingsStkrmList
        {
            get 
            { 
                return wiingsStkrmList; 
            }
            set 
            { 
                wiingsStkrmList = value;
                SendChangedNotification("WiingsStkrmList");
            }
        }

        private ObservableCollection<BuyerWebService.StockroomTransfer> stockroomTransferdetails;
        public ObservableCollection<BuyerWebService.StockroomTransfer> StockroomTransferDetails
        {
            get
            {
                return stockroomTransferdetails;
            }
            set
            {
                stockroomTransferdetails = value;
                SendChangedNotification("StockroomTransferDetails");
            }
        }

我检查了输出窗口 在'BuyerPortal.BuyerWebService.StockroomTransfer'上找不到'WiingsStkrmList'属性

StockroomTransfer用于绑定数据网格。组合试图在父项源中找到WiingsStkrmList。

如何将其绑定到其他集合?

1 个答案:

答案 0 :(得分:1)

您需要指定可以找到绑定属性的位置的相对源,通常是通过指向绑定到视图模型的父元素。像这样:

ItemsSource="{Binding StockroomTransferDetails, RelativeSource={RelativeSource AncestorType=Grid}}"

将AncestorType = Grid更改为具有viewmodel的datacontext的内容...基本上是数据网格之外的内容。