xamarin.forms 在事件处理程序中访问复选框的名称或 ID
xamarin.forms Access name or ID of checkbox in event handler
我的视图中有多个复选框,它们都绑定到同一个事件处理程序。
现在我需要知道在这个事件处理程序中选中或取消选中了哪个复选框。
所以我尝试访问该名称,有趣的是,这就是它的样子:
正如您在 ID 下看到的那样,它说明了复选框的名称。
当我尝试访问该 ID 时
var checkbox = sender as CheckBox;
checkbox.Id现在已经变成guid了,不再是checkbox的名字了(这个我也不懂)
如何将参数或名称传递到我的复选框以在事件处理程序中检索它?
编辑:
这不是工作代码(因为我不能像这样访问 checkbox.Id,因为它是一个 guid 对象,而不仅仅是一个字符串)
<CheckBox Color="White"
CheckedChanged="chk_monthly_CheckedChanged"
x:Name="check_daily"
HorizontalOptions="Start"
VerticalOptions="Start"/>
async void chk_monthly_CheckedChanged(System.Object sender, Xamarin.Forms.CheckedChangedEventArgs e)
{
var checkbox = sender as CheckBox;
check_daily.CheckedChanged -= chk_monthly_CheckedChanged;
chk_monthly.CheckedChanged -= chk_monthly_CheckedChanged;
chk_weekly.CheckedChanged -= chk_monthly_CheckedChanged;
await Task.Delay(50);
check_daily.IsChecked = false;
chk_monthly.IsChecked = false;
chk_weekly.IsChecked = false;
checkbox.IsChecked = true;
// not working
if(checkbox.Id == "check_daily")
{
}
check_daily.CheckedChanged += chk_monthly_CheckedChanged;
chk_monthly.CheckedChanged += chk_monthly_CheckedChanged;
chk_wee
kly.CheckedChanged += chk_monthly_CheckedChanged;
}
选项 1
复选框的名字:
<CheckBox x:Name="cbx_laser">
然后在事件处理程序中检查发送者是否是复选框
if(sender.Equals(cbx_laser)){
// Do Stuff
string cbx_name = cbx_laser.Name; // Heres how to get the name
}
选项 2
使用发件人参数和类型转换。
string cbx_name = ((Checkbox)sender).Name;
我的视图中有多个复选框,它们都绑定到同一个事件处理程序。 现在我需要知道在这个事件处理程序中选中或取消选中了哪个复选框。
所以我尝试访问该名称,有趣的是,这就是它的样子:
正如您在 ID 下看到的那样,它说明了复选框的名称。
当我尝试访问该 ID 时
var checkbox = sender as CheckBox;
checkbox.Id现在已经变成guid了,不再是checkbox的名字了(这个我也不懂)
如何将参数或名称传递到我的复选框以在事件处理程序中检索它?
编辑:
这不是工作代码(因为我不能像这样访问 checkbox.Id,因为它是一个 guid 对象,而不仅仅是一个字符串)
<CheckBox Color="White"
CheckedChanged="chk_monthly_CheckedChanged"
x:Name="check_daily"
HorizontalOptions="Start"
VerticalOptions="Start"/>
async void chk_monthly_CheckedChanged(System.Object sender, Xamarin.Forms.CheckedChangedEventArgs e)
{
var checkbox = sender as CheckBox;
check_daily.CheckedChanged -= chk_monthly_CheckedChanged;
chk_monthly.CheckedChanged -= chk_monthly_CheckedChanged;
chk_weekly.CheckedChanged -= chk_monthly_CheckedChanged;
await Task.Delay(50);
check_daily.IsChecked = false;
chk_monthly.IsChecked = false;
chk_weekly.IsChecked = false;
checkbox.IsChecked = true;
// not working
if(checkbox.Id == "check_daily")
{
}
check_daily.CheckedChanged += chk_monthly_CheckedChanged;
chk_monthly.CheckedChanged += chk_monthly_CheckedChanged;
chk_wee
kly.CheckedChanged += chk_monthly_CheckedChanged; }
选项 1
复选框的名字:
<CheckBox x:Name="cbx_laser">
然后在事件处理程序中检查发送者是否是复选框
if(sender.Equals(cbx_laser)){
// Do Stuff
string cbx_name = cbx_laser.Name; // Heres how to get the name
}
选项 2
使用发件人参数和类型转换。
string cbx_name = ((Checkbox)sender).Name;