2011-06-19 14 views
0

この質問はあなたの多くが既に投稿していることですが、まだ問題があります。アイデアは非常に簡単です:私はDataGridを持っており、DataGridでアイテムを選択すると、DataFormにあるComboBoxのアイテムを選択する必要があります。私は多くの記事を読んで、私がやったことでいくつかのアイデアを実現し、そして今、私はこれを持っていますDataForm、SL4のComboBox

<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を塗りつぶし、DataGridの値をComboBoxの値でバインドする唯一の方法ですが、間違った方法でバインドします。データフォームで[編集]をクリックすると、常にComboBoxが最初の項目に初期化されます。もちろん、データグリッドの値は同じ値になります(間違っています)。

私は間違っていますか?

ありがとうございます!

P.S. PhysicalQuantityに1つまたは0のユニット(BaseUnit)があるPhysicalQuantityとUnitという2つのテーブルがあることは忘れてしまいました。

  • ラッキー

答えて