2011-04-14 50 views
0

您好我想找到某種方式來單擊按鈕時更改其他控件的可見性,如帶XAML中的觸發器的DataGrid。按鈕點擊更改WPG中的觸發器DataGrid的可見性

該按鈕僅將DataGrid的可見性更改爲Visible,它在Code Behind中執行其他操作,但這是我認爲可以在具有觸發器的Style中完成的操作。

我試圖找到一個解決方案,它似乎有可能做但我無法理解如何。

在此先感謝。

回答

9
<Button Content="Button!"> 
    <Button.Triggers> 
     <EventTrigger RoutedEvent="Button.Click"> 
      <BeginStoryboard> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.Target="{x:Reference dataGrid}" 
                Storyboard.TargetProperty="Visibility"> 
         <DiscreteObjectKeyFrame KeyTime="0:0:0" 
               Value="{x:Static Visibility.Visible}"/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Button.Triggers> 
</Button> 

{x:Reference dataGrid}引用名爲dataGrid一個DataGrid,或者你可以只使用Storyboard.TargetName。如果您綁定或引用資源,則通常會使用Storyboard.Target屬性。

+0

你逃脫我..我正要張貼相同.. :) – 2011-04-14 13:11:49

+0

但在不要在標記擴展中添加命名空間'pc'。我會用這個 - 2011-04-14 13:13:40

+0

對我也有很大的幫助,快點!關於能見度的事情很有趣,不知道它已經可以這樣訪問了。 – 2011-04-14 13:14:33

1

只是一個建議,但怎麼樣,爲了更容易理解,有一個複選框啓用/禁用DataGrid顯示?這是我平時做:

<DockPanel LastChildFill="True"> 
    <CheckBox DockPanel.Dock="Right" VerticalAlignment="Center" x:Name="DisplayBox" 
         Content="Display grid" Margin="4" IsChecked="False"/> 
    <DataGrid Visibility="{Binding ElementName=DisplayBox, Path=IsChecked, Converter={StaticResource BoolToVisibilityConverter}}" /> 
</DockPanel> 

,當然還有,你必須執行相應的轉換器

+2

沒有必要實現,這樣的轉換器已經存在於框架中,它已經被稱爲'BooleanToVisibilityConverter'。 – 2011-04-14 12:55:13

+0

謝謝,我甚至不知道,並繼續使用我很久以前做過的轉換器。我會考慮現在刪除它! – Damascus 2011-04-14 12:58:32

+0

同樣在這裏,幾乎是我寫的第一個轉換器,不記得我何時發現了現有的轉換器。 – 2011-04-14 13:05:19