首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ComboBox in DataForm,SL4

ComboBox in DataForm,SL4
EN

Stack Overflow用户
提问于 2011-06-19 09:22:23
回答 1查看 1.8K关注 0票数 0

我知道这是你们中许多人已经发布的问题,但我仍然有一个问题。这个想法非常简单:我有一个DataGrid,当我在DataGrid中选择条目时,它应该在ComboBox中选择DataForm中的item。我读过许多帖子,但在我所做的工作中几乎没有实现什么想法,现在,我有了以下几点:

代码语言:javascript
复制
 <StackPanel Grid.Column="1" Grid.Row="4" Name="stackPanel1" Margin="0,0,0,-257">                    
                <sdk:DataGrid Name="PhysicalQuantitiesGrid"
                          MinHeight="100" IsReadOnly="True"
                          Margin="0,12,0,0"
                          ItemsSource="{Binding PhysicalQuantities}"
                          SelectedItem="{Binding Path=CurrentPhysicalQuantity, Mode=TwoWay}"                              
                          AutoGenerateColumns="False" VerticalGridLinesBrush="{x:Null}">
                    <sdk:DataGrid.RowDetailsTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Vertical" Margin="5">
                                <StackPanel Orientation="Horizontal" Margin="5">
                                    <StackPanel Orientation="Vertical" Margin="5">
                                        <TextBlock
                                        FontSize="12"
                                        Width="Auto"                                            
                                        Text="Base unit term"/>
                                        <TextBlock 
                                            Foreground="CadetBlue" 
                                            FontSize="12"
                                            Width="Auto" 
                                            TextWrapping="Wrap"                                            
                                            Text="{Binding Path=Unit.Term}"/>
                                    </StackPanel>
                                    <StackPanel Orientation="Vertical" Margin="5">
                                        <TextBlock
                                            FontSize="12"
                                            Width="Auto"                                            
                                            Text="Short term"/>
                                        <TextBlock 
                                            Foreground="CadetBlue" 
                                            FontSize="12"
                                            Width="Auto" 
                                            TextWrapping="Wrap"                                                             
                                            Text="{Binding Path=Unit.ShortTerm}"/>
                                    </StackPanel>
                                </StackPanel>
                            </StackPanel>
                        </DataTemplate>
                    </sdk:DataGrid.RowDetailsTemplate>
                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTextColumn Header="Term"                                                                                                 
                                            Binding="{Binding Path=Term}"
                                            FontSize="14"
                                            Foreground="DarkBlue"
                                            >
                        </sdk:DataGridTextColumn>
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,12,0,0">
                    <Button x:Name="NewPhysicalQuantity" Content="AddNew" Height="23" Click="NewPhysicalQuantity_Click"/>
                </StackPanel>
                <dataform:DataForm x:Name="PhysicalQuantityDetails" 
                                   Header="Fizicke velicine - detalji" 
                                   AutoGenerateFields="False" 
                                   AutoEdit="False"                                       
                                   CommandButtonsVisibility="Commit,Cancel,Edit"
                                   Margin="0,12,0,0"                                       
                                   CurrentItem="{Binding Path=CurrentPhysicalQuantity}" 
                                   CancelButtonContent="Cancel" 
                                   CommitButtonContent="Commit"
                                   >
                    <dataform:DataForm.EditTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <dataform:DataField Label="Physical Quantity term:">
                                    <TextBox Text="{Binding Path=Term, Mode=TwoWay}" />
                                </dataform:DataField>
                                <dataform:DataField Label="Base unit">
                                    <StackPanel>
                                        <riaControls:DomainDataSource AutoLoad="True" Height="0" Name="baseUnitsDataSource" QueryName="GetBaseUnitsOrdered" Width="0">
                                            <riaControls:DomainDataSource.DomainContext>
                                                <myService:DomainDomainContext/>
                                            </riaControls:DomainDataSource.DomainContext>
                                        </riaControls:DomainDataSource>                                          
                                        <myControl:ComboBox 
                                                  ItemsSource="{Binding ElementName=baseUnitsDataSource, Path=Data}" 
                                                  SelectedValuePath="IDUnit" 
                                                  DisplayMemberPath="Term"                                                       
                                                  SelectedValue="{Binding Path=IDUnit, Mode=TwoWay}"                                                         
                                                  >
                                            <ComboBox.ItemsPanel>
                                                <ItemsPanelTemplate>
                                                    <VirtualizingStackPanel />
                                                </ItemsPanelTemplate>
                                            </ComboBox.ItemsPanel>
                                        </myControl:ComboBox>
                                    </StackPanel>                                        
                                </dataform:DataField>            
                            </StackPanel>
                        </DataTemplate>
                    </dataform:DataForm.EditTemplate>
                </dataform:DataForm>
                <StackPanel 
                    Orientation="Horizontal" 
                    HorizontalAlignment="Right" 
                    Margin="0,12,0,0">
                    <Button 
                        Content="Save" 
                        x:Name="SaveChangesButton" 
                        Width="100" 
                        Height="23" 
                        Margin="4,0,4,0" 
                        Command="{Binding SaveCommand}" />
                </StackPanel>

            </StackPanel>

所以,我在RIA中使用了MVVM。对于数据网格,我使用MVVM,对于ComboBox数据上下文,我使用RIA。这是填充ComboBox和用ComboBox值绑定DataGrid值的唯一方法,但方法是错误的!在数据表单中单击“编辑”时,总是将ComboBox初始化为第一项。当然,数据网格中的值得到相同的值(错误!)。

我做错什么了?

谢谢!

我忘记提到我有两个表,PhysicalQuantity和Unit,其中PhysicalQuantity有一个或零个单位(BaseUnit)。

  • Lucky
EN

回答 1

Stack Overflow用户

发布于 2011-11-16 20:38:41

您使用的是错误的 ComboBox。

Kyle McClellan有一个功能更强的ComboBox,老实说,它应该已经在工具包中推出了2次了,但是在工具包支持下似乎也有一些可疑之处。请阅读更多关于它的信息:http://blogs.msdn.com/b/kylemc/archive/2010/06/18/combobox-sample-for-ria-services.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6401602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档