Как получить доступ к элементу управления, созданному в отдельном файле класса в представлении xaml?

Я создал динамическую метку .CS (FormEvents.цезий)

        DXTabItem myTabItem= new DXTabItem();
        myTabItem.Header = new Label()
        { 
            Name= "lblTabAccountHeader", 
            Content = "MyTab" + Convert.ToString(UserID) 
        };

и я хочу получить доступ к ярлыку «lblTabAccountHeader» в моем (AccountsDisplay.xaml) и использовать его в качестве связывающего элемента в целевом объекте размещения

<Popup x_Name="ClosingMenuPopMenuControl"  PlacementTarget="{Binding ElementName=lblTabAccountHeader}" StaysOpen="False" PopupAnimation="Fade">

1 ответ

  1. Нельзя получить прямой доступ к метке в xaml из файла cs. Но это возможно, если реализовать интерфейс INotifyPropertyChanged и запустить событие PropertyChanged при изменении соответствующего свойства. Это можно сделать с помощью свойства string.

    FormEvents.цезий

    public class FormEvents : BindableBase
    {
       private string someName;
        public string SomeName
        {
            get {return someName;}
            set { SetProperty(ref someName, value);}
        }
    
        public FormEvents()
        {
            DXTabItem myTabItem= new DXTabItem();
            myTabItem.Header = new Label()
            { 
                Name= "lblTabAccountHeader", 
                Content = "MyTab" + Convert.ToString(UserID) 
            };
            SomeName = lblTabAccountHeader.Content;
        }
    }
    

    В YouView.код XAML.цезий

    public class YourView 
    {
        prvate FormEvents instance = new FormEvents();
    
        public YourView()
        {
            instance.SomeName.PropertyChanged += EventHandler;
    
        }
    
        private void EventHandler(object obj)
        {
            TextBoxinYourView.Text = instance.SomeName;
        }
    }
    

    Таким образом, при изменении свойства в файле класса оно также будет отражено в представлении.