如何解决如何在Xamarin中为VisualElement设置名称?
我想在代码中构建布局,并使用FindByName查找VisualElement。
public StackLayout CreateView() {
StackLayout stackLayout = new StackLayout();
foreach(Label label in Enumerable.Range(1,100).Select(x => {
Label label = new Label();
//label.Name = "Test" + x; // how to set the name here?
return label;
})) {
stackLayout.Children.Add(label);
}
return (stackLayout);
}
public Label GetLabel(StackLayout stackLayout,string name) {
return (Label)stackLayout.FindByName(name);
}
解决方法
最后我找到了解决方案。
1,添加一个实现接口“ Xamarin.Forms.Internals.INameScope”的类“ NameScope1”
2,新建一个NameScope1的实例“ ns” => ns.RegisterName(“ Test” + x,label);
3,将所有视图设置为相同的NameScope => NameScope.SetNameScope(label,ns);
4,寄存器名称=> ns.RegisterName(“测试” + x,标签);
完整代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button[][] buttons = new Button[3][3];
private boolean player1Turn = true;
private int roundCount;
private int player1Points;
private int player2Points;
private TextView textViewPlayer1;
private TextView textViewPlayer2;
MediaPlayer mp;
Context context = this;
Button button_00;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button_00 = (Button) findViewById(R.id.button_00);
final MediaPlayer mp = MediaPlayer.create(this,R.raw.sample);
button_00.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.start();
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。