2012-09-27 26 views
0

我的XAML:的Silverlight的ScrollViewer腐化集中邏輯

<Grid Background="White"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1*"/> 
     <ColumnDefinition Width="1*"/> 
    </Grid.ColumnDefinitions> 
    <ScrollViewer Grid.Column="0"> 
     <StackPanel> 
     <Grid Margin="5" Background="LightGray"> 
      <TextBlock>Grid1</TextBlock> 
     </Grid> 
     <TextBlock Margin="5">TextBlock1</TextBlock> 
     <CheckBox Margin="5">CheckBox1</CheckBox> 
     <Button Margin="5">Button1</Button> 
     </StackPanel> 
    </ScrollViewer> 
    <StackPanel Grid.Column="1"> 
     <Grid Margin="5" Background="LightGray"> 
     <TextBlock>Grid2</TextBlock> 
     </Grid> 
     <TextBlock Margin="5">TextBlock2</TextBlock> 
     <CheckBox Margin="5">CheckBox2</CheckBox> 
     <Button Margin="5">Button2</Button> 
    </StackPanel> 
    </Grid> 

這給出了這樣的輸出:

UI Output

這裏是我的問題。如果Button2重點點擊Grid2TextBlock2將不會改變焦點。但是,如果Button1的具有焦點,點擊GRID1TextBlock1,然後重點將是從Button1的刪除。爲什麼?對我來說,當你用一個ScrollViewer圍繞一個面板時,焦點邏輯被破壞。

在此先感謝。

回答

2

我可以部分回答你...

是不是ScrollViewer休息專注,當你使用一個ScrollViewer作爲一個容器,你點擊有沒有抽到焦點,ScrollViewer本身控制一些地方得到重點,所以要避免ScrollViewer重視你可以關閉它的屬性IsTabStop

我想這一點,並ScrollViewer當您在單擊控件沒有焦點處理像GridTextblock沒有得到關注,但聚焦依然表現奇怪,這就是爲什麼我之前所說的「部分」。

設置IsTabStopfalseScrollViewer,看看它留給自己......

此外,您還可以看看的this後,其中一人提議的方式實行「重點檢查」,它只是一個幾行代碼。

+0

謝謝您的輸入。什麼不工作是:點擊Grid1或TextBlock1,然後焦點跳轉到CheckBox1。 –