2017-05-22 1 views
0

그래서 여기에 나는 다시 당신을위한 간단하고 간단한 질문과 함께,하지만 그것은 나를 미치게하고 내가 뭘 계획하고있는 솔루션을 찾을 수없는 것 같습니다.C# WPF 끌어서 놓기 Treeview 요소

내가 재귀 DataTable을

다음
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; 

를 통해 트 리뷰 발생하고있어이 트 리뷰의 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이 있습니까? 그렇다면 DataRowViews (TreeViewItem.DataContext as DataRowView)를 참조하십시오. 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

에서

덕분에, 여기에 내가 정말 바보 같은 느낌입니다! 내 친구가 "왜 스택 패널을 사용하지 않으시겠습니까?"라고 말했습니다. 그래서 내가 한 ....

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

그와 StackPanel의에 대한 좀 더 기능이 트릭을했다. 그럼에도 불구하고, 귀하의 의견은 정말 도움이되었고 나는 분명히 그들을 다시 조사 할 것입니다!