Xamarin UWP 将字段名称获取到发件人
Posted
技术标签:
【中文标题】Xamarin UWP 将字段名称获取到发件人【英文标题】:Xamarin UWP get field name into sender 【发布时间】:2022-01-08 20:38:09 【问题描述】:我在 Xamarin 中为 UWP 创建一个表单,我有这个代码:
XAML
<StackLayout Orientation="Horizontal" HorizontalOptions="CenterAndExpand">
<Label Text="My Checkbox"
VerticalOptions="Center"
TextColor="White"></Label>
<CheckBox x:Name="myCheckbox"
WidthRequest="150"
VerticalOptions="Center"
Color="#ff914d"
CheckedChanged="Check_Changed"></CheckBox>
<Label Text="Other Checkbox"
VerticalOptions="Center"
TextColor="White"></Label>
<CheckBox x:Name="otherCheckbox"
WidthRequest="150"
VerticalOptions="Center"
Color="#ff914d"
CheckedChanged="Check_Changed"></CheckBox>
</StackLayout>
在我的 CS 中: (GET_FIELD_NAME 在我的代码中不是这样的,我要求一种方法来做到这一点)
void Check_Changed(object sender, CheckedChangedEventArgs e)
switch( GET_FIELD_NAME )
case myCheckbox :
// Update myCheckbox var
case otherCheckbox :
// Update otherCheckbox var
etc.
因为我有大量的复选框,所以我不想要大量不同的方法,而是需要一个带有开关的复选框,该开关用获取的名称更新正确的 var。 我查看了“发件人”属性,但什么也没找到…… 我怎样才能得到这些信息:x:Name of field clicked only one method for all
谢谢你的帮助^^ (对不起,英语不是我的母语)
【问题讨论】:
Name
只是一个 XAML 助手,它不是您可以在运行时访问的实际属性。您可以将一些未使用的属性(如 StyleId)重新用于相同的目的
如果答案已经解决了您的问题,请mark它被接受
【参考方案1】:
执行此操作的更好方法是定义一个附加的Tag
BindableProperty,如 UWP 平台控件。并使用以下 taghelper 在 xaml 中使用标记值指定每个 CheckBox。
附加课程
public class TagHelper
public static readonly BindableProperty TagProperty = BindableProperty.Create("Tag", typeof(string), typeof(TagHelper), null);
public static string GetTag(BindableObject bindable)
return (string)bindable.GetValue(TagProperty);
public static void SetTag(BindableObject bindable, string value)
bindable.SetValue(TagProperty, value);
用法
<StackLayout HorizontalOptions="CenterAndExpand" Orientation="Horizontal">
<Label
Text="My Checkbox"
TextColor="White"
VerticalOptions="Center" />
<CheckBox
x:Name="myCheckbox"
local:TagHelper.Tag="myCheckbox"
CheckedChanged="Check_Changed"
VerticalOptions="Center"
WidthRequest="150"
Color="#ff914d" />
<Label
Text="Other Checkbox"
TextColor="White"
VerticalOptions="Center" />
<CheckBox
x:Name="otherCheckbox"
local:TagHelper.Tag="otherCheckbox"
CheckedChanged="Check_Changed"
VerticalOptions="Center"
WidthRequest="150"
Color="#ff914d" />
</StackLayout>
后面的代码使用GetTag
方法检索标签值。
private void Check_Changed(object sender, CheckedChangedEventArgs e)
var checkbox = sender as CheckBox;
var tag = TagHelper.GetTag(checkbox);
switch (tag)
case "myCheckbox":
break;
case "otherCheckbox":
break;
default:
break;
【讨论】:
正是我想要的!谢谢!以上是关于Xamarin UWP 将字段名称获取到发件人的主要内容,如果未能解决你的问题,请参考以下文章
无法将项目添加到 PasswordCredential.Properties 字段(C# uwp)
Facebook Graph API 没有返回(发件人)字段以获取评论?