2013-07-20 2 views
0

Как установить DataContext одного элемента управления для кодирования позади?
Невозможно использовать DataContext для Windows, поскольку это указывает на что-то другое.
Для одного элемента управления я хотел бы установить DataContext в codebehind, но не могу понять это.
Не использовать MVVM.Как установить DataContext одного элемента управления для кодирования отстающего

Это не работает, поскольку RelativeSource отображается в ComboBox.

<ComboBox DataContext="{Binding RelativeSource={RelativeSource Self}}" ItemsSource="{Binding Path=Chars}" SelectedItem="{Binding Path=Comma}" Width="40" PresentationTraceSources.TraceLevel="High" /> 

Это страница - не окно

Это работает:

<ComboBox DataContext="{Binding RelativeSource={RelativeSource AncestorType=Page}}" ItemsSource="{Binding Path=Chars}" SelectedItem="{Binding Path=Comma, Mode=TwoWay}" Width="40" PresentationTraceSources.TraceLevel="High" /> 

Есть ли лучшее решение?

+1

Вы попробовали дать 'ComboBox' имя say' x: Name = "cmBox" и в коде для загруженного события назначить 'DataContext' непосредственно' Loaded + = (sender, args) => cmBox.DataContext = this; 'где' this' является классом кода, который вы хотите установить как 'DataContext' ComboBox' – Viv

+0

@Viv, который работал. – Paparazzi

+0

@Viv, как насчет обновления вашего комментария к ответу и Blam, не могли бы вы отметить этот вопрос в ответ, так что люди не теряют время, приходя сюда, чтобы дать вам ответ? – Sheridan

ответ

0

Преобразование мой комментарий к ответу:

, так как вы не следуете MVVM, вы могли бы уйти с давая вашему ComboBox имя и назначение DataContext к нему прямо с вашего кода позади.

<ComboBox x:Name="cmBox" ... /> 

и в коде-за CTOR класса:

Loaded += (sender, args) => cmBox.DataContext = this; 

говоря ^^, нет ничего плохого с использованием RelativeSource Binding для назначения DataContext непосредственно из XAML, это то, что я предпочел бы сделайте сам (но я «стараюсь» соблюдать MVVM в своих приложениях).

+0

Я закончил использовать XAML, но это также работает – Paparazzi

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