微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Xamarin中为VisualElement设置名称?

如何解决如何在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 举报,一经查实,本站将立刻删除。