2011-02-08 54 views
0

我在Wp7應用程序中使用ListPicker。包含listPicker控件的頁面還包含一個LongListSelector。 LongListSelector的每個元素都有一個Click Gesture處理程序。在窗口電話7額外的水龍頭ListPicker控制

當我點擊ListPicker適當地進入全屏「Full Mode」。我點擊一個選擇,完整模式適當關閉。然後在ListPicker的父頁面上註冊另一個水龍頭,直接點擊Full Mode窗口點擊以創建解決方案。我可以激活索引視圖或LongListSelector的元素。

似乎ListPicker無法將點按事件標記爲已處理,而且正在冒泡。有沒有其他人注意到這種行爲?任何workarrounds?

+0

你好約翰,我不得不用'ContextMenu`類似的問題,即點擊它會傳播的點擊元素位於下方(有一個「點擊」手勢註冊)。我已經說明了這裏的解決方法http://stackoverflow.com/questions/4697107/wp7-cancelling-contextmenu-click-event-propagation/4697652#4697652 我不知道如何將它應用到`ListPicker `雖然,因爲我找不到`Opened`和`Closed`事件。 – Praetorian 2011-02-08 02:08:08

回答

0

這是一種工作的摸索,這對我來說,當我有同樣的問題:

您需要添加一個FullHeaderItemTemplate用手柄來加載和卸載事件。

<toolkit:ListPicker.FullModeItemTemplate> 
    <DataTemplate> 
    <Grid Margin="12,15,12,15"> 
     <TextBlock Text="{Binding FullName}" 
        Loaded="TextBlockLoaded" 
        Unloaded="TextBlockUnloaded" 
        Style="{Binding PhoneTextExtraLargeStyle}" /> 
    </Grid> 
    </DataTemplate> 
</toolkit:ListPicker.FullModeItemTemplate> 

的事件,您需要具備以下條件:

private void TextBlockLoaded(object sender, RoutedEventArgs e) 
    { 
     LayoutRoot.IsHitTestVisible = false; 
    } 

    private void TextBlockUnloaded(object sender, RoutedEventArgs e) 
    { 
     LayoutRoot.IsHitTestVisible = true; 
    }