2014-10-17 3 views
0

Я создал новое окно, которое я затем вызвать, используя следующий код:Как установить DataContext в окне Dialog для его родительского DataContext

NieuwSimulatie NiewSimulatieWindow = new NieuwSimulatie() 
{ 
    Owner = this 
}; 

bool? SimulatieAangemaakt = NiewSimulatieWindow.ShowDialog(); 

В окне «NieuwSimulatie» Я хотел бы иметь тот же DataContext как в моем MainWindow, или я хотел бы DataBind элементы управления непосредственно к DataContext с помощью RelativeSource я geuss, Ive пытался:

<Controls:SplitButton x:Name="ProjectNaam" 
         DisplayMemberPath="ProjectNaam" 
         ItemsSource="{Binding Static.Projecten, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Controls:MetroWindow}}"/> 

Но это не работает.

Пожалуйста, помогите мне исправить свой DataBinding или помочь мне установить DataContext моего окна в DataContext, который находится за MainWindow.

+0

D o Вы имеете в виду 'DataContext = this.DataContext' при создании дочернего окна? – dkozl

+0

Я пробовал это, и он вернул null, теперь я понимаю, что это потому, что окно еще не было закончено. Im an idiot :( – user3692104

ответ

0

Я у вас есть доступ ко ваш DataContext, откуда вы создаете окно, как об этом:

NieuwSimulatie NiewSimulatieWindow = new NieuwSimulatie() 
{ 
    Owner = this, 
    DataContext = YourDataContext; 
}; 

bool? SimulatieAangemaakt = NiewSimulatieWindow.ShowDialog(); 
0

Для того, чтобы сделать то, что вы спрашиваете, как правило, делается при создании нового окна, потому что они являются две ОС Windows это лучше передать контекст, в ... как это:

NieuwSimulatie MyNewWindow = new NieuwSimulatie(DataContent); 
MyNewWindow.Show(); 
0

Я думаю, что вам нужно сделать это следующим образом:

NieuwSimulatie NiewSimulatieWindow = new NieuwSimulatie() 

NiewSimulatieWindow.DataContext=this.DataContext; 

bool? SimulatieAangemaakt = NiewSimulatieWindow.ShowDialog(); 
+0

'ItemSource' необходимо будет обновить, чтобы отразить это изменение – MickyD

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