【问题标题】:Programmatically compose object Id Name on Xamarin with C#使用 C# 以编程方式在 Xamarin 上编写对象 ID 名称
【发布时间】:2021-07-26 14:34:54
【问题描述】:

我需要将 ImageButton 传递给函数,但 ID 取决于按下的键(例如,如果用户按下“x”键,我需要传递“Button_x”,因为我必须更改源按钮的图像)。

string IDButton = "Button_key" + letter.ToString().ToUpper();  //ex. Button_keyX
ImageButton btn = new ImageButton();
btn.Id = IDButton;
function_that_changes_button_image_source(btn);

问题在于“Id”是只读的。 有没有办法做到这一点?

谢谢

【问题讨论】:

  • 使用ClassId属性
  • 对我不起作用 btn.ClassId = IDButton;

标签: c# visual-studio xamarin.forms imagebutton


【解决方案1】:

我已经解决了,谢谢大家。

我用过this.ViewControls.FindByName(IDButton)

private void myFunc()
{
    string IDButton = "Button_key" + letter.ToString().ToUpper();   //ex: Button_keyP if letter value is 'p'
    object btn = this.ViewControls.FindByName(IDButton) as object;

    function_that_changes_button_image_source(letter.ToString().ToLower(), btn);
    ...
}

 private void PutTheXon(string letter, object bottone)
{
    
    ImageButton btn2change = (ImageButton)bottone;
    btn2change.IsEnabled = false;
    btn2change.Source = ImageSource.FromFile("x_" + letter.ToLower() + "_pb.png");  //changes the source image 'x_p_pb.png' if letter value is 'p'
}

【讨论】:

    【解决方案2】:

    我认为function_that_changes_button_image_source 应该只接受 id 而不是整个按钮对象。

    【讨论】:

    • 问题是我无法以编程方式设置Id。例如:如果我按键盘上的“x”,我需要带有x:Name="Button_keyX" 的“ImageButton”更改他的源图像
    • 改变图片的函数应该找到id/name为Button_keyX的控件并改变源图片。
    • 我已经用this.ViewControls.FindByName解决了
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2013-06-29
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多