2009-11-12 4 views
1

Я играю с Infragistics xamDataGrid. Я хотел бы отобразить в поле «Field» (= Cell) пользовательский UserControl и иметь для него DataContext поля. Как-то DataContext всегда нуль :-)DataBinding UserControl через ControlTemplate

Вот XAML:

<UserControl.Resources> 
    <Style x:Key="MyTestUserControl" TargetType="{x:Type igDP:CellValuePresenter}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> 
      <myUC:MyTestUserControl 
       DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}, 
            Path=Value}" /> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 
    <Style x:Key="TextBoxField" TargetType="{x:Type igDP:CellValuePresenter}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> 
      <TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, 
            Path=Value}" /> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 
</UserControl.Resources> 

DataContext для TextBoxField работает отлично, но DataContext для MyUserControl нет.

Некоторые более XAML, где я определяю поля:

<igDP:UnboundField BindingPath="SimpleTestStringToDisplay" Label="UnboundField"> 
    <igDP:Field.Settings> 
    <igDP:FieldSettings CellValuePresenterStyle="{StaticResource TextBoxField}" /> 
    </igDP:Field.Settings> 
</igDP:UnboundField> 

<igDP:UnboundField BindingPath="MyUserControlViewModel" 
        Label="UnboundField (UserControl)"> 
    <igDP:Field.Settings> 
    <igDP:FieldSettings CellValuePresenterStyle="{StaticResource MyTestUserControl}" /> 
    </igDP:Field.Settings> 
</igDP:UnboundField> 

Кто-нибудь есть идея, что я делаю не так?

Спасибо!

Приветствия, Джозеф

EDIT: я пытался что-то вроде этого, но безуспешно:

<myUC:MyUserControl DataContext="{TemplateBinding DataContext}" /> 

ответ

0

ваш тестовый проект выше, не имеют те же привязок, он делает в шаблонах, но не на <igDP:UnboundField>

попробуйте использовать те же привязки и посмотрите, не по-прежнему ли вы получаете контекст данных, то по крайней мере эксперимент будет действительным (изолировать ред). возможно, проблема связана с вашей вид модели связывания, попробуйте follwing код -

<igDP:UnboundField BindingPath="MyUserControlViewModel" Label="UnboundField" > 
    <igDP:Field.Settings> 
    <igDP:FieldSettings CellValuePresenterStyle="{StaticResource TextBoxField}" /> 
    </igDP:Field.Settings> 
</igDP:UnboundField> 

<igDP:UnboundField BindingPath="MyUserControlViewModel" Label="UnboundField (UserControl)"> 
    <igDP:Field.Settings> 
    <igDP:FieldSettings CellValuePresenterStyle="{StaticResource MyTestUserControl}" /> 
    </igDP:Field.Settings> 
</igDP:UnboundField> 

, если вы сделаете это сделать как шаблоны не получают контекст данных ?. поставьте debugConverter (method 2) на ваш привязку в шаблоне, чтобы убедиться, что вы привязаны.

К слову, какие сообщения об отказе связывания вы получаете в своем окне вывода?

+0

Спасибо за ответ. Мне на самом деле не нужно было что-то вставлять в UserControl .. он просто «наследует» DataContext от UnboundField, если его правильно объявит ;-) –

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