2016-05-29 7 views
0

私はWPFでdevexpressを使用していますが、コードビハインドのイベントハンドラを持つDragDropManagerがある状況です。グリッドコントロールに行をドラッグすると、イベントハンドラが期待通りに呼び出されます。私の問題は、イベントargs内のラップされたコントロールは、その定義プロパティの大部分が疑問符 '?'に置き換えられているため、ソースコントロールから識別情報を得ることができないということです。 Image of the situation described aboveイベントのオブジェクトにプロパティが不足しているのはなぜですか?

ここで、私のビューのスニペットを以下に示します。スニペットには、最初に行がドラッグされるコントロール、その後行がドラッグされるコントロールが含まれます。簡単にするために、私は列を削除しました。これらGRIDCONTROLアラウンド

<dxg:GridControl ItemsSource="{Binding DataViewSheets}" SelectedItem="{Binding SelectedDataViewSheet}" MaxHeight="300" Height="300" DefaultSorting="Name" x:Name="grc_sheets"> 
          <dxg:GridControl.View> 
           <dxg:TableView Name="firstView" AllowBestFit="True" ShowColumnHeaders="True" 
             ShowVerticalLines="false" ShowHorizontalLines="True" ShowIndicator="False" IsDetailButtonVisibleBinding="{Binding Row.HasChildren, Mode=TwoWay}"> 
           </dxg:TableView> 
          </dxg:GridControl.View> 
          <dxmvvm:Interaction.Behaviors> 
           <dxg:GridDragDropManager AllowDrag="False" AllowDrop="True" AllowScrolling="True" Drop="GridDragDropManager_OnDrop"/> 
          </dxmvvm:Interaction.Behaviors> 
          <dxg:GridControl.DetailDescriptor> 
           <dxg:DataControlDetailDescriptor ItemsSourcePath="DataViewAttributes"> 
            <dxg:DataControlDetailDescriptor.DataControl> 
             <dxg:GridControl SelectedItem="{Binding SelectedDataViewAttributeViewModel}" x:Name="grc_sheetAttributes"> 
              <dxg:GridControl.View> 
               <dxg:TableView ShowGroupPanel="False" DetailHeaderContent="DataControlDetailDescriptor" AutoWidth="False" ShowVerticalLines="false" ShowHorizontalLines="True" ShowIndicator="False" IsDetailButtonVisibleBinding="{Binding Row.HasChildren, Mode=TwoWay}"></dxg:TableView> 
              </dxg:GridControl.View> 
              <dxg:GridControl.DetailDescriptor> 
               <dxg:DataControlDetailDescriptor ItemsSourcePath="ChildDataViewAttributes"> 
                <dxg:DataControlDetailDescriptor.DataControl> 
                 <dxg:GridControl x:Name="grc_childAttributes"> 
                  <dxmvvm:Interaction.Behaviors> </dxmvvm:Interaction.Behaviors>            <dxg:GridControl.View> 
                   <dxg:TableView ShowGroupPanel="False" DetailHeaderContent="DataControlDetailDescriptor" AutoWidth="False" ShowVerticalLines="false" ShowHorizontalLines="False" ShowIndicator="False" IsDetailButtonVisibleBinding="{Binding Row.HasChildren, Mode=TwoWay}"></dxg:TableView> 
                  </dxg:GridControl.View> 
                 </dxg:GridControl> 
                </dxg:DataControlDetailDescriptor.DataControl> 
               </dxg:DataControlDetailDescriptor> 
              </dxg:GridControl.DetailDescriptor> 
             </dxg:GridControl> 
            </dxg:DataControlDetailDescriptor.DataControl> 
           </dxg:DataControlDetailDescriptor> 
          </dxg:GridControl.DetailDescriptor> 
         </dxg:GridControl> 

<dxg:GridControl ItemsSource="{Binding CurrentDomain.EntityClasses}" x:Name="grc_availableAttributes"> 
           <dxg:GridControl.View> 
            <dxg:TreeListView DataRowTemplateSelector="{StaticResource selector}" TreeDerivationMode="HierarchicalDataTemplate" ShowVerticalLines="False" ShowHorizontalLines="False" ShowIndicator="False"/> 
           </dxg:GridControl.View> 
           <dxmvvm:Interaction.Behaviors> 
            <dxg:TreeListDragDropManager AllowDrag="True" AllowDrop="False"/> 
           </dxmvvm:Interaction.Behaviors> 
          </dxg:GridControl> 

私だけの場所ですべてを保つために、その内部LayoutGroupsの数でLayoutControlを持っています。

私はこれを煮詰めたサンプルプロジェクトに抽出し、DevExpressサポートに援助を依頼しましたが、私が今までに得た解決策は役に立たなかった。実際に抽出されたサンプルは、グリッドコントロールとすべてのプロパティを見ることができました。まったく同じことを私の元のプロジェクトに戻そうとしたとき、それはもう機能しませんでした。唯一の違いは、私のビューモデルと実際には、元のプロジェクトで私はいくつかのものを実装していませんでした。

コードビハインドでイベントが直接処理されているにもかかわらず、私のビューモデルがイベント引数に影響を与えているのは本当ですか?

フォローアップの質問:プロパティが消えてしまう同じ種類のものを経験したことがありますか?はいの場合、あなたの解決策は何ですか?ただ

ちょうどそれの楽しみのために、私は今日は、彼らが実際に(もっと良い言葉の欠如に)解決できるかどうかを確認するために、ちょうどe.SourceControlのさまざまなプロパティを取得しようとしたか、彼らはなります

答えて

0

更新例外を投げたり、nullになったりします。ここ は私がやったことです: '?' 期待通り

private void GridDragDropManager_OnDrop(object sender, GridDropEventArgs e) 
    { 
     var control = e.SourceControl; 
     var name = control.Name; 
     var draggedRowContent = (EntityAttribute)e.DraggedRows[0]; 
     ((DataViewViewModel)DataContext).Execute_DropEntityAttribute(e); 
    } 

がe.SourceControlはまだありましたプロパティのほとんどは、しかし、私は実際に期待される結果を得る別のプロパティを取得しようとすると。ウォッチリストにコントロールを追加するだけでも、デバッガを介して見るよりも多くのproeprtiesが公開されます。結論; Visual Studioデバッガ には、機械にいくつかのねじれがあり、これを解決する必要があります。

関連する問題