2016-06-28 29 views
0

我有這個ToggleButtonEventTrigger被給予重點

<ToggleButton x:Name="buttonStudentPicker" Content="Student Picker" HorizontalAlignment="Right" Margin="2,10,2,10" BorderThickness="0,5,0,0" Background="{x:Null}"> 
    <ToggleButton.LayoutTransform> 
     <RotateTransform Angle="90"/> 
    </ToggleButton.LayoutTransform> 
    <ToggleButton.Style> 
     <Style TargetType="ToggleButton"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=buttonBibleReadingMain, Path=IsFocused, Mode=OneWay}" Value="True"> 
        <Setter Property="IsChecked" Value="True"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ToggleButton.Style> 
</ToggleButton> 

我有兩個相關的問題。首先,我在界面上實際上有幾個元素,我希望這個按鈕可以打開。目前,我只能根據一個元素來研究如何做到這一點,因爲我不能同時關注所有元素。本質:

If button a or button b or button c has just been clicked 
    Toggle student picker button to true 

的相關的問題是,雖然我有工作的一個控件,並且切換大火,我把重點放在另一個控制的瞬間切換關閉。我真的不想要那樣。理想情況下,如果按鈕獲得焦點時切換已經關閉,那麼是的,它應該再次切換。但fi已經可見,它不應該關閉。

理想情況下,我會使用MultiDataTrigger,但因爲我發現所有的條件必須是真實的。從here我決定做一組DataTriggers的:

<ToggleButton x:Name="buttonStudentPicker" Content="Student Picker" HorizontalAlignment="Right" Margin="2,10,2,10" BorderThickness="0,5,0,0" Background="{x:Null}"> 
    <ToggleButton.LayoutTransform> 
     <RotateTransform Angle="90"/> 
    </ToggleButton.LayoutTransform> 
    <ToggleButton.Style> 
     <Style TargetType="ToggleButton"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=buttonBibleReadingMain, Path=IsPressed, Mode=OneWay}" Value="True"> 
        <Setter Property="IsChecked" Value="True"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding ElementName=buttonBibleReadingClass1, Path=IsPressed, Mode=OneWay}" Value="True"> 
        <Setter Property="IsChecked" Value="True"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding ElementName=buttonBibleReadingClass2, Path=IsPressed, Mode=OneWay}" Value="True"> 
        <Setter Property="IsChecked" Value="True"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ToggleButton.Style> 
</ToggleButton> 

我想我會嘗試IsPressed,看看它的工作原理和它,但不是使用合適的物業。

我只是不明白。如果他們點擊按鈕,觸發切換爲真。但別做任何事情。

清澈如泥?

更新:如果我添加一個點擊處理程序到我的按鈕。例如:

<Button Name="buttonBibleReadingMain" Grid.Column="1" Background="Transparent" Click="buttonBibleReadingMain_Click"> 
    <Image Source="Images/AssignmentTypeBibleReading.png" Margin="2"/> 
</Button> 

,並把這個是後臺代碼:

private void buttonBibleReadingMain_Click(object sender, RoutedEventArgs e) 
{ 
    buttonStudentPicker.IsChecked = true; 
} 

它做什麼的想。當按鈕被點擊時,它確保面板現在可見。只要我想要,該面板將保持可見狀態。但我需要爲我想強制面板顯示的每個控件執行此操作。

+0

如果您點擊一個按鈕並且已經選中了togglebutton,該怎麼辦?它應該取消選中或者什麼都不做? – Jose

+0

@Kirenenko在這個時候,我覺得我想要做的就是通過設置切換爲真來觸發開啓面板。用戶可以將其切換回去。 –

+0

好的,那麼我認爲你應該使用後面的代碼。您可以對3個按鈕使用相同的點擊事件。 – Jose

回答

0

可以使MultiDataTrigger工作像或代替,而且由於這一點:

(A和B)< =>¬(¬A或¬B)

適用於您的代碼:

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding ElementName=buttonBibleReadingMain, Path=IsPressed, Mode=OneWay}" Value="false" /> 
     <Condition Binding="{Binding ElementName=buttonBibleReadingClass1, Path=IsPressed, Mode=OneWay}" Value="false" /> 
     <Condition Binding="{Binding ElementName=buttonBibleReadingClass2, Path=IsPressed, Mode=OneWay}" Value="false" /> 
    </MultiDataTrigger.Conditions> 
    <Setter Property="IsChecked" Value="false"/> 
</MultiDataTrigger> 

,讓您倒置所有真值假,並設置喲默認值我們將youbutton.IsChecked設爲true。這樣,如果每個按鈕都未按下,您只會取消選中您的按鈕。

+0

謝謝。但這恐怕不是我想要的。我即將更新我的問題。 –