如果我有他们的字符串名称,从代码访问xaml元素

时间:2013-12-06 10:03:23

标签: c# wpf xaml

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

所有网格都被命名为grid1,grid2,grid3等。我可以在代码中通过随机数获取字符串名称,并获得我希望显示的网格名称。

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

祝你好运

1 个答案:

答案 0 :(得分:2)

最直接的做法是为每个Name声明一个Grid值:

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

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

Grid1.Visibility = Visibility.Hidden;

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

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

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

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

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