【问题标题】:Accessing xaml elements from code if I have their string name如果我有字符串名称,则从代码访问 xaml 元素
【发布时间】:2013-12-06 10:03:23
【问题描述】:

我有一个代码,我需要能够访问 XAMl 中不同数量的预建网格并使它们可见或折叠

所有网格都命名为 grid1、grid2、grid3 等。我有能力在代码中通过随机数获取字符串名称并获取我想要显示的网格的名称。

我在网上搜索,人们建议使用 reflect 方法,但我很难弄清楚我必须使用的语法。

最好的问候

【问题讨论】:

  • 您的具体问题是什么?
  • 你在使用 MVVM 框架吗?

标签: c# wpf xaml


【解决方案1】:

最直接的方法是为每个Name 声明一个Name 值...:

<Grid Name="Grid1">
    ...
</Grid>

...然后您可以从后面的代码中通过该名称访问它们:

Grid1.Visibility = Visibility.Hidden;

但是,这是 WPF,通常不建议这样做。一种首选方法是将一些 bool 属性添加到您的代码后面或查看模型...:

public bool IsGrid1Visible { get; set; } // Implement INotifyPropertyChanged interface

...然后使用BooleanToVisibilityConverter 将这些直接绑定到Grid1.Visibility 属性:

<Grid Grid1.Visibility="{Binding IsGrid1Visible, Converter={StaticResource 
    BooleanToVisibilityConverter}}">
    ...
</Grid>

然后您只需将IsGrid1Visible 属性设置为truefalse 即可更改Grid.Visibility 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多