2017-09-03 83 views
0

我有两个toggleButton's,都设置为null状态,现在我想检查用户是否曾经切换过按钮。如何检查ToggleButton的启动状态

<StackPanel Height="45" Orientation="Horizontal" Margin="0,20,0,0"> 
<Label VerticalContentAlignment="Bottom" Content="هل القاعة صالحة من حيث الإستماع؟"/> 
<ToggleButton x:Name="ListeningStatusText" IsThreeState="True" IsChecked="{x:Null}" /> 
</StackPanel> 

<StackPanel Height="45" Orientation="Horizontal" Margin="0,20,0,0"> 
<Label VerticalContentAlignment="Bottom" Content="الإضاءة"/> 
<ToggleButton x:Name="LightingStatusText" IsThreeState="True" IsChecked="{x:Null}" /> 
</StackPanel> 

随着代码波纹管我failled看到,如果用户从来没有切换按钮:如果你想知道,如果使用曾经切换按钮

var ToggleButtonControl = (ToggleButton)ControlName; // 
if (ToggleButtonControl.IsChecked == null) 
{ 
    parameterStr = "/////////////"; 
    //MessageBox.Show("This should pop-up only if the user never toggled the button"); 
} 
else 
{ 
    //MessageBox.Show("The user toggle or toggle it back"); 
    if (ToggleButtonControl.IsChecked == false) 
     parameterStr = "لا"; 
    else 
     parameterStr = "نعم"; 
} 
+0

它似乎为我工作。如果没有点击切换按钮,IsChecked将为空。 – AQuirky

回答

0

,附加功能的经过和Unchecked事件并在你的类中有一个布尔标志来跟踪它。

的按钮看起来像这样(加上你的其他属性):

<ToggleButton 
Checked="toggleButton_Changed" 
Unchecked="toggleButton_Changed" /> 

在函数体中,布尔标志设置为true,这意味着用户已经跳转,你的按钮。如果您想获取当前值,请检查该按钮的IsChecked属性。

0

没有内置属性可用于确定ToggleButton是否已被切换。用户可以在他们想要的次数之间在true,falsenull状态之间切换。

你需要自己跟踪这个。尽管如此,这应该是一件容易的事情。例如,您可以处理CheckedUnchecked事件所建议的@pedrolmota和使用字段来跟踪这些事件处理程序是否曾经被称为:

private bool _hasBeenToggled; 
private void ToggleButton_Checked(object sender, RoutedEventArgs e) 
{ 
    _hasBeenToggled = true; 
} 

private void ToggleButton_Unchecked(object sender, RoutedEventArgs e) 
{ 
    _hasBeenToggled = true; 
} 

您然后只需查看在您的其他字段的值方法:

var ToggleButtonControl = (ToggleButton)ControlName; // 
if (!_hasBeenToggled) //<-- 
{ 
    parameterStr = "/////////////"; 
    //MessageBox.Show("This should pop-up only if the user never toggled the button"); 
} 
else 
{ 
    //MessageBox.Show("The user toggle or toggle it back"); 
    if (ToggleButtonControl.IsChecked == false) 
     parameterStr = "لا"; 
    else 
     parameterStr = "نعم"; 
} 

如果按照MVVM设计模式,你可以只设置_hasBeenToggled在源setter方法。