저는 WPF를 처음 사용하고 기존 코드로 인해 어려움을 겪고 있습니다.WPF : TreeView 내의 DataGrid 행을 클릭해도 TreeView.SelectedItemChanged가 발생하지 않습니다.
우리는 가지가 많은 나무가 있습니다. 한 지점에서 우리는 DataGrid를 가지고 있습니다.
격자의 빈 영역 (행이없는 경우)을 클릭하면 TreeView.SelectedItemChanged가 올바르게 호출됩니다. 우리의 경우, SelectedItem = 'SelectedGridBorder'(아래의 XAML 참조)
그러나 행의 행/셀을 클릭하면 행에 포커스가 있지만 TreeView.SelectedItemChanged는 호출되지 않습니다. 그래서 TreeView.SelectedItem은 이전에 선택된 항목입니다. 이 (나에 따르면) 논리적 동작을 달성 할 수 있습니다. 행을 클릭 할 때 TreeView.SelectedItemChanged가 자동으로 호출되어야하고 행이없는 표 영역을 클릭하는 것처럼 TreeView.SelectedItem이 'SelectedGridBorder'여야합니다. 아르.
'SelectedItemChanged'가 그리드 행을 클릭하거나 행이없는 그리드를 클릭하는 이유는 무엇입니까?
감사합니다.
XAML :
<TreeView x:Name="CalculationDataTree" .....>
<Cinch:EventCommander.Mappings>
<Cinch:CommandEvent
Command="{Binding Path=DataContext.SelectionChangeCommand ....
Event="SelectedItemChanged"
Cinch:CommandEvent.CommandParameter="{Binding ElementName=CalculationDataTree,Path=SelectedItem}"/>
...
<TreeViewItem x:Name="Params" ...>
<TreeViewItem.Header>
<TextBlock>Parameters</TextBlock>
</TreeViewItem.Header>
<TreeViewItem x:Name="Dates" Margin="0,6,0,0">
<TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Margin="4,10">Date(s)</TextBlock>
<ContentControl Margin="4,6" Content="{Binding}" ContentTemplate="{StaticResource OwnEditorTemplate}" />
</StackPanel>
</TreeViewItem.Header>
</TreeViewItem>
<Border Name="SelectedGridBorder" ... >
<StackPanel Orientation="Vertical">
<TextBlock Margin="4,10">Other parameters</TextBlock>
<StackPanel Orientation="Horizontal">
<DockPanel>
<dg:DataGrid Height="300" Width="600" Name="dataGrid" ....>
<dg:DataGrid.Columns>
...
</dg:DataGrid.Columns>
귀하의 의견은, 한편으로, 나는 또한 그것을 고정 덕분에이 다른 Q 나를 도와 : HTTP : // 유래 .com/questions/6586488/wpf-treeview-selecteditemchanged-not-firing. 어떻게 해결 했습니까 : Grid_GotFocus'에서'(VisualHelper.GetAncestorByType (DependencyObject, typeof (TreeViewItem)로 TreeViewItem)를 TreeViewItem으로 호출) .IsSelected = true;'그리드가 없으므로 어떻게 작동 될지 궁금 해서요. 직접 TreeViewItem Ancestor,하지만 디버깅, 그리고 그것을했다 -하지만 당신은 분명히 (WPF 그것을 자동으로 만듭니다). 감사! – Zotyi