我有两个toggleButton's
,都设置为null
状态,现在我想检查用户是否切换过按钮。
<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>
使用下面的代码,我无法查看用户是否从不切换按钮:
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 :(得分:0)
如果您想知道该用户是否曾切换过该按钮,请将一个函数附加到Checked和Unchecked事件,并在您的班级中设置一个布尔标志来跟踪该事件。
按钮看起来像这样(加上你的其他属性):
<ToggleButton
Checked="toggleButton_Changed"
Unchecked="toggleButton_Changed" />
在函数体中,将boolean标志设置为true,这意味着用户已切换按钮。如果要获取当前值,请选中按钮的IsChecked属性。
答案 1 :(得分:0)
没有内置属性可用于确定ToggleButton
是否已被切换。用户可以根据需要在true
,false
和null
州之间切换。
您需要自己跟踪。这应该是一件容易的事情。例如,您可以按照@pedrolmota的建议处理Checked
和Unchecked
事件,并使用字段来跟踪是否曾调用过这些事件处理程序:
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设计模式,则可以在源属性的setter中设置_hasBeenToggled
。