как получить длступ к xaml из своего класса?

164
12 июля 2017, 22:13

Как получить доступ элементам MainPage.xaml из созданного мной класса?

Answer 1

Чтобы получить доступ к элементам формы в своем классе необходимо передать ссылку на объект формы или на нужный контрол в созданный вами класс. Вот пример:

1) Создаем класс, поле которого хранит ссылку на вашу форму:

public class Class1
{
    private readonly MainWindow _form;
    public Class1(MainWindow form)
    {
        _form = form;
        _form.LabelTest.Content = "Тест";
    }
}

Класс получает ссылку на объект вашей формы в конструкторе и изменяет текст лейбла, который присутствует в форме, на "Тест".

2) Создаем экземпляр вашего класса, передав ссылку на класс вашей формы в конструкторе. Например это можно сделать в конструкторе класса формы:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        var c = new Class1(this);
    }
}

XAML формы:

    <Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Label Name="LabelTest" Content="Label" HorizontalAlignment="Left" Margin="220,129,0,0" VerticalAlignment="Top"/>
    </Grid>
</Window>

Результат:

Если вам не нужно иметь прямой доступ к контролам формы, а нужно выводить/получать данные с нее, лучше используйте паттерн MVVM

READ ALSO
Почему Bower выдает ошибку &ldquo;throw error;&rdquo;?

Почему Bower выдает ошибку “throw error;”?

У меня есть проект, который находиться на диске "E" и bower работает отлично

281
Как отфильтровать массив объектов?

Как отфильтровать массив объектов?

В filterArraystatus_id при выборе двух одинаковых статусов падают одинаковые объекты

297
Доступ к компонентам react

Доступ к компонентам react

Как можно протестировать react компонент, пытаюсь создать класс things который наследуется от const MapServ, нет доступа к testMethod , getPage ни в переменной...

271
когда лучше писать is Requiredв пропсах а когда defaultprops?

когда лучше писать is Requiredв пропсах а когда defaultprops?

когда лучше писать isRequired в пропсах а когда defaultprops?

204