2010-09-01 84 views
0

在我的窗口中,我有listview和其他元素。我如何實現這種焦點行爲:當我按下最後一個listitem上的按鍵時,從另一個元素上的listview中移動焦點,相應地,按住第一個元素上的按鍵將焦點從列表中移開。 所以專注於按下上下鍵可以從其他元素移動到列表中,通過拋出列表並離開列表。列表與其他元素之間的焦點移動。 WPF

在此先感謝。

回答

1

KeyboardNavigation.DirectionalNavigation附加屬性設置爲繼續。 ListBox的默認值是Contained。

<ListBox KeyboardNavigation.DirectionalNavigation="Continue"/> 
+0

謝謝,但它只是讓listItems中盤旋。如何強制keyboardfocus通過按下上下鍵傳遞給其他元素? – Void 2010-09-01 15:06:20

+0

@Void:將它設置爲Cycle會做到這一點,但繼續應該讓它離開。你是否將ListBox嵌套在另一個可能將其設置爲Cycle的控件中? ListBox可能讓焦點離開,然後父控件再次將其設置回ListBox的開始位置。如果您發佈了一些XAML,它可能會有所幫助。 – Quartermeister 2010-09-01 15:15:06

+0

好的。我已經發布了一些xaml。 – Void 2010-09-03 11:36:09

0

我在我的應用程序中有不同的情況。對於所有控件,我有我的樣式,但在tabcontrol樣式中,我設置了屬性KeyboardNavigation.DirectionalNavigation =「Continue」。 1.這裏應該有可能被選中listviewitems和tabitems。當關注tabitem並按下( - >)tabitem更改時。 2.這裏應該有可能被選中的listboxitems和按鈕。 3.這裏應該有選擇TabItem和TextBlocks的可能性。 而且我可以使用箭頭而不是選項卡。 :

<TabControl Name="tabControl1"> 
     <TabItem Header="PORT" Name="PORT">    
       <ListView x:Name="ATList"        
          ItemsSource="{Binding Path=., NotifyOnTargetUpdated=true}" 
          KeyboardNavigation.DirectionalNavigation="Continue" 
          KeyUp="ATList_KeyUp" TargetUpdated="ATList_TargetUpdated">       
        <ListView.View> 
         <GridView > 
          <GridViewColumn> ........ 
          </GridViewColumn> 
         </GridView> 
        </ListView.View> 
       </ListView>    
     </TabItem> 
     ....... 
</TabControl>  

2.

<Grid> 
    <ListBox ItemsSource="{Binding NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True}" 
      KeyboardNavigation.DirectionalNavigation="Continue" 
      ClipToBounds="true" TargetUpdated="List_TargetUpdated" SourceUpdated="List_SourceUpdated">   
    </ListBox> 
    <WrapPanel> 
     <Label .../> 
     <Label .../>    
     <Button x:Name="NewBtn"      
       IsEnabled="{Binding ElementName=UsedMemory, Path = Content, Converter={StaticResource RouteNewConverter}}" 
       Click="NewRouteBtn_Click"> New </Button>    
     <Button x:Name="DeleteBtn" Click="DeleteBtn_Click"> Delete </Button> 
    </WrapPanel> 
</Grid> 

<TabControl Margin="2,5,2,1" Name="tabControl1" > 
     <TabItem Header="AV" Name="AV"> 
      <Grid> 
       <StackPanel x:Name="inf"> 
          <TextBlock /> 
            ... 
          <TextBlock />            
       </StackPanel> 
      </Grid> 
     </TabItem> 
</TabControl>