2017-05-22 18 views
0

ここでも私はあなたにはおそらく簡単に簡単な質問をしていますが、それは私を狂ったものにしてしまい、私がしようとしていることに対する解決策を見つけることができないようです。C#WPFドラッグ&ドロップのツリービュー要素

私は、再帰的なデータテーブル

ここ
Datatable dtStorage; 

ds.Tables.Add(dtStorage); 
//add a relationship 
ds.Relations.Add("rsParentChild", ds.Tables["Storagedata"].Columns["ID"], 
ds.Tables["Storagedata"].Columns["CONTENTOF"]); 

_rootNodes = ds.Tables["Storagedata"].DefaultView; 
_rootNodes.RowFilter = "CONTENTOF IS NULL"; 

treeView.ItemsSource = _rootNodes; 

てツリービューを生成していますがTreeViewコントロールのXAMLです:

<TreeView ContextMenuOpening="TextBlock_ContextMenuOpening" ItemsSource="{Binding RootNodes}" x:Name="treeView" SelectedItemChanged="treeView_SelectedItemChanged" BorderBrush="#FFCACACA" VerticalAlignment="Stretch" FontFamily="Courier New" Margin="0,0,-0.4,-0.2" 
     VirtualizingStackPanel.IsVirtualizing="True" 
     VirtualizingStackPanel.VirtualizationMode="Recycling"> 
    <TreeView.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> 
     <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Red" /> 
     <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Transparent" /> 
     <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="Red" /> 
    </TreeView.Resources> 

    <TreeView.ItemTemplate > 
     <HierarchicalDataTemplate ItemsSource="{Binding rsParentChild}" > 
       <StackPanel Tag="{Binding LABEL}" Orientation="Horizontal" ToolTip="{Binding ADDITIONALINFO}" Margin="0,2,0,0" > 
        <Image x:Name="TheImage" Tag="{Binding TYPE}" Margin="0,0,2,0" Width="20" Height="20"> 
         <!--Loaded="Image_Loaded"--> 
         <Image.ToolTip> 
           <TextBlock Text="{Binding ID, StringFormat=ID:{0}}" /> 
         </Image.ToolTip> 
        </Image> 
        <TextBlock Text="{Binding LABEL}" ContextMenuOpening="TextBlock_ContextMenuOpening" VerticalAlignment="Center" Padding="2,0,0,0" ToolTip="{Binding ADDITIONALINFO}" > 
        </TextBlock> 
       </StackPanel> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

これまでのところは良いです。私のTreeviewは期待どおりに作成されており、素敵なTreeviewを取得します。
しかし、私はドラッグを取得したいと考えています&ドロップ機能。
私の問題は、私が検索したほとんどのチュートリアルが私にとってはうまくいかず、私はTreeViewItemsを持っていません。 私にはDataRowViewがあります。

簡易ドラッグアンドドロップ機能を追加することはできますか?
ID-1をID-2に移動します。ここで、ID-1は選択された値で、ID-2はターゲットのDataRowViewです。

助けが必要です。ティップス、ヒント、解決策または批評

ありがとうございます。

+0

DragnDropハンドラにTreeViewItemがありますか?そうであれば、DataRowViewをDataRowViewとして(TreeViewItem.DataContext)取得することもできます。https://stackoverflow.com/questions/1026179/drag-drop-in-treeview – Rekshino

+0

ありがとうございます。この記事では、ファイルをドラッグする方法について説明しています。INTOツリービュー。私がしようとしているのは、ドラッグ&ドロップでAからBに何かを移動できる機能があることです。私は言ったように、私は現在、(TreeViewItem)が動作する必要があり、私のコードでそれを提供することができないので、ドラッグ&ドロップ機能が動作していません。 – Sunrunner

+0

これは間違いありません。 TreeViewItemのスタイルを設定し、マウスイベントをトリガーすると、DataContext内のDataRowViewでTreeViewItemが取得されます。 https://stackoverflow.com/questions/639884/highlight-treeview-item-being-dragged-overも参照してください。 – Rekshino

答えて

0

だからここに私は本当に馬鹿だと感じています! 私の友人は「スタックパネルを代わりに使うのはなぜですか?」と言っただけです。 そして私はとのStackPanelに関するいくつかのより多くの機能がトリックをしたと....

private void sp_mouseDown(object sender, MouseButtonEventArgs e) { 
e.GetPosition(null); 
_sp = sender as StackPanel; 
drv = (DataRowView)_sp.DataContext; 
drv["ID"].ToString(); 
} 

をしました。 それにもかかわらず、あなたのコメントは本当に役立ちました。

関連する問題