2015-06-23 2 views
0

У меня есть UserControl, расположенный внутри MainWindow. UserControl запускает запрос и заполняет определенные TextBlocks внутри него. Я также хочу заполнить TextBlock в MainWindow из тех же возвращенных данных.Связывание datacontext usercontrol с mainwindow

Как связать данные MainWindow с UserControl? Я пробовал:

<MainWindow DataContext="{Binding Path=DataContext, ElementName=UserControlName}"> 

Любая помощь была бы оценена. Благодаря!

ответ

0

Вот простой рабочий пример.

UserControl XAML содержит только двунаправленное текстовое поле. Источник материал родственник более многословен, чем вам нужно, вы могли бы иметь контекст данных установлен выше, но это просто, чтобы понять, где свойство исходит от:

<TextBox x:Name="ucTextBox" 
     Text="{Binding Path=UcText, 
         RelativeSource={RelativeSource AncestorType={x:Type local:UserControl1}}, 
         Mode=TwoWay, 
         UpdateSourceTrigger=PropertyChanged}" /> 

Контрольный код пользователя за декларирует либо зависимость свойство или, как показано здесь, обычное свойство реализации INotifyPropertyChanged:

private string _ucText; 
public string UcText 
{ 
    get { return _ucText; } 
    set 
    { 
     _ucText = value; 
     OnPropertyChanged("UcText"); 
    } 
} 

MainWindow XAML затем устанавливает его собственный блок текста в текст свойства из текстового поля в элементе управления пользователя, например, так:

<StackPanel Orientation="Vertical"> 
    <TextBlock Text="{Binding Path=UcText, ElementName=uc1}"/> 
    <local:UserControl1 x:Name="uc1" /> 
</StackPanel> 

В коде MainWindow ничего лишнего не требуется.

В результате это текстовое поле (в пользовательском элементе управления), которое при вводе внутри него обновляет текстовый блок в главном окне.

Смежные вопросы