Csharp/C#教程:我可以用字符串引用WPF元素吗?分享


我可以用字符串引用WPF元素吗?

我希望能够通过字符串中的文本引用C#中的WPF元素。 像这样的东西:

SelectElementFromString("TestButton").Opacity = 1; 

我可以这样做吗?

你真的需要吗? 不知怎的,我怀疑它。 怎么样:

XAML:


  

码:


 _SomeControl.SomeMethod(); 

以这种方式使用字符串几乎总是一个坏主意,只能使你的代码变得脆弱(我说几乎是因为有一些正当的理由,它们并不常见)。 另外,为什么你的方法返回一个字符串?

编辑:根据您在此处的评论,我建议您只使用一个集合来迭代您的控件:

我会用它,但这是一个痛苦[blah0.Property = true; blah 1.Property = true …]我有什么解决方案可以解决这个问题

几乎每个初学程序员都希望这样做(包括我自己几年前)。 创建一组名为label0label1label2等的控件,然后在循环中访问它们,如下所示:

 for( int i = 0; i < numControls; ++i ) { Control c = GetControl( "label" + i ); } 

由于各种原因这很糟糕,(幸运的是)完全没必要。 将所有控件加载到List ,并根据需要迭代它们。

 private List _controls = new List(); private void InitControlList() { _controls.Add( someControl ); _controls.Add( someOtherControl ); // and so on. Now just iterate through the list // when you need to update or access the controls. } 

正如HB所说,我的回答有助于OP,但可能无法帮助未来搜索此论坛的人真正需要直接回答。 所以,这是Jon的答案的转贴(谢谢,如果我能= D,会给你更多的代表)

您可以使用FindName搜索FrameworkElement的子控件。 要设置控件的名称,请使用XAML中的Name或x:Name属性。

注意:如果使用x:Name,该控件也将作为FrameworkElement的代码隐藏字段提供,您将可以直接访问它。

您可以使用FindName搜索FrameworkElement的子控件。 要设置控件的Name ,请使用XAML中的Namex:Name属性。

注意:如果使用x:Name ,该控件也将作为FrameworkElement的代码隐藏字段提供,您将可以直接访问它。

FrameworkElement.FindName将引导您朝着正确的方向…… https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.findname.aspx

  string indx ="textbox1"; var txt= layout.FindName(indx); TextBox sometxt= txt as TextBox; sometxt.Opacity = 1; 

这可能有所帮助

上述就是C#学习教程:我可以用字符串引用WPF元素吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/998736.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐