在WPF MVVM中按标签查找标签

时间:2019-03-18 14:06:48

标签: c# wpf mvvm

我正在尝试通过标签查找标签,以便在满足特定条件时在标签旁边添加其他标签。

在旧学校winform中,我只会使用:

Label sublabel = Controls.Find(Sub.id, true).FirstOrDefault() as Label;

view.xaml的片段:

<Grid>
    <Label 
        Content = "{Binding Path = NodeName, Mode = OneWay}" 
        Background = "{Binding Path = NodeStatus, Mode = OneWay}"
        Tag="{Binding Path = Nodeid, Mode = OneWay}"

我尝试了以下方法:

var label = Grid.Children.OfType<Label>()
    .First(i => i.Tag == "tagid");

但会生成

An object reference is required for the non-static field, method, or property 'Panel.Children'

感谢您的光临

1 个答案:

答案 0 :(得分:5)

您可以在XAML标记中为quotient赋予Grid

x:Name

...并在您的代码中使用该名称进行引用:

<Grid x:Name="theGrid">

请注意,无论如何,这不是MVVM。使用MVVM,您可以访问var label = theGrid.Children.OfType<Label>() ... 元素的Nodeid源属性,而不是Tag属性。