2014-04-16 48 views
0

嘿,我想弄清楚爲什麼我的擴展器不會擴展第二次點擊它。換句話說,當我第一次點擊並展開時,第二次單擊它並摺疊,然後第三次單擊它,它不會打開。WPF擴展器擴展/摺疊

我有一個擴展器,裏面的擴展器是一個文本框。這是我用來打開並關閉它的代碼:

Private Sub expanderFocus(sender As Object, e As RoutedEventArgs) 
    ticketCurrentExpander = sender 

    ticketCurrentTextBox = ticketMyTextBoxes(textBoxNum) 
    ticketCurrentExpander.Background = New SolidColorBrush(Colors.White) 
    ticketCurrentExpander.Height = 250 
    ticketCurrentExpander.IsExpanded = True 
    Canvas.SetZIndex(ticketCurrentExpander, 1000) 
End Sub 

Private Sub expanderLostFocus(sender As Object, e As RoutedEventArgs) 
    ticketCurrentExpander.IsExpanded = False 
    ticketCurrentExpander.Height = 24 
    Canvas.SetZIndex(ticketCurrentExpander, 0) 
    e.Handled = True 
End Sub 

我發現了高度財產的點擊,當它不顯示第三次了問題的原因。我還沒有想出如何顯示它,而不必定義盒子的高度。如果我沒有指定高度,那麼當我點擊它時,該框永遠不會打開。

我會錯過什麼?

回答

1

我無法確切地告訴你你的問題是什麼,或者如果它甚至可以從你的代碼示例中重現,但我可以告訴你有一個更簡單的方法來控制一個Expander控件的打開和關閉。如果您的數據將Expander.IsExpanded屬性綁定到您的視圖模型中的bool屬性,則可以通過將屬性設置爲當您感覺喜歡它時打開和關閉Expander

看這個基本的例子,它是交換提到bool屬性用於ToggleButton的爲了簡單起見,IsChecked屬性:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 
    <Expander Grid.Column="0"> 
     <TextBox Text="Enter something here" /> 
     <Expander.Style> 
      <Style TargetType="{x:Type Expander}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsChecked, 
         ElementName=ToggleButton}" Value="True"> 
         <Setter Property="IsExpanded" Value="True" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Expander.Style> 
    </Expander> 
    <ToggleButton Name="ToggleButton" Grid.Column="1" Content="Open/Close Expander" /> 
</Grid> 
+0

但不此req。一個複選框? – StealthRT

+0

我說*看到這個基本的例子**,爲簡單起見,它交換了'ToggleButton'的** IsChecked'屬性的布爾屬性* ...所以不,你不需要'Checkbox','' ToggleButton'或任何其他控件。你只需要在你的視圖模型/代碼背後有一個'bool'屬性。 – Sheridan