Как связать wpf с определенным текстом данных из разных классов?
Привет, ребята. Я очень новичок в WPF. У меня есть два dacactextex в двух разных классах, которые связаны элементами в View, производящих триггеры данных, и один или другой не будут работать, так как они не могут связать оба datacontexts вместе. Как связать xaml из двух разных классов, используя datacontext? Есть ли альтернативный способ сделать это проще?
Класс А
public Window1()
{
InitializeComponent();
Appointments = new Appointments();
DataContext = Appointments;
}
Класс б
private void FilterAppointments()
{
this.DataContext = this;
...
1 ответ
Во-первых, вы никогда не должны использовать DataContext = this;
в любой UserControl
в серьезном приложении WPF. Во-вторых, вы должны искать шаблон проектирования MVVM, который предоставляет идею модели представления для каждого представления. Ваш Window
или же UserControl
являются "Представлениями", и ваши модели представлений - это просто классы, которые содержат все свойства данных, которые вам нужно отображать в вашем представлении.
Поэтому вы должны объявить класс модели представления (который реализует INotifyPropertyChanged
интерфейс) и поместите все, что вы хотите, чтобы данные связывались с этим Наконец, вы должны установить этот объект как DataContext
стоимость имущества. Таким образом, вы получите доступ ко всем нужным вам данным.
Глядя на ваш вопрос, мне пришло в голову, что вы, возможно, установили DataContext
в this
чтобы вы могли использовать свойства, которые вы объявили в своем Window
или же UserControl
, Если это так, то вы не должны устанавливать DataContext
в this
вместо того, чтобы использовать RelativeSource Binding
чтобы получить доступ к свойствам. Это освободило бы фактическое DataContext
быть установленным так, как вам нравится. Попробуй это Binding
в пределах Window
или же UserControl
:
<TextBlock Text="{Binding PropertyName, RelativeSource={RelativeSource
AncestorType={x:Type YourPrefix:YourWindowOrControl}}}" />