I've created a class that I need to have Visibility property like other UI controls. It looks like this:
More extended code:
xaml:
<ListBox x:Name="itemsHolder" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <TextBlock  Text="{Binding Name}" />
                            <TextBlock  Text="{Binding Surname}"/>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
Code behind:
public ObservableCollection<MyClass > myVM= new ObservableCollection<MyClass>();
        public class MyClass : Control //FrameworkElement
                {
                    public string Name { get; set; }
                    public string Surname { get; set; }
                }
    ...
    MyClass my1 = new MyClass();
    my1.Name = "Test";
    my1.Surname = "Test2";
    myVM.Add(my1);
    itemsHolder.ItemsSource = myVm;
    ...
    private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
      {
        foreach(MyClass item in itemsHolder.Items)
        {
           if(!item.Name.Contains((sender as TextBox).Text))
           {
               item.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
           }
           else
           {
               item.Visibility = Windows.UI.Xaml.Visibility.Visible;
           }
        }
      }
What I try to do is something like a filter(search) and I want to hide items. Just adding a property to the class also does not work.