如何检查ToggleButton的启动状态
问题描述:
我有两个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 = "نعم";
}
答
,附加功能的经过和Unchecked事件并在你的类中有一个布尔标志来跟踪它。
的按钮看起来像这样(加上你的其他属性):
<ToggleButton
Checked="toggleButton_Changed"
Unchecked="toggleButton_Changed" />
在函数体中,布尔标志设置为true,这意味着用户已经跳转,你的按钮。如果您想获取当前值,请检查该按钮的IsChecked属性。
答
没有内置属性可用于确定ToggleButton
是否已被切换。用户可以在他们想要的次数之间在true
,false
和null
状态之间切换。
你需要自己跟踪这个。尽管如此,这应该是一件容易的事情。例如,您可以处理Checked
和Unchecked
事件所建议的@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方法。
它似乎为我工作。如果没有点击切换按钮,IsChecked将为空。 – AQuirky