我正在玩Infragistics xamDataGrid。 我想在一个“Field”(= Cell)中显示一个自定义的UserControl,并为它提供Field的DataContext。不知何故,DataContext始终为null: - )
这是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>
TextBoxField的DataContext工作正常,但MyUserControl的DataContext却没有。
我定义字段的更多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>
有没有人知道我做错了什么?
谢谢!
干杯, 约瑟夫
编辑: 我也试过这样的事情,没有成功:
<myUC:MyUserControl DataContext="{TemplateBinding DataContext}" />
答案 0 :(得分:0)
上面的测试项目没有相同的绑定,它在模板中但不在
<igDP:UnboundField>
尝试使用相同的绑定,看看你是否仍然没有获得数据上下文,那么至少实验将是有效的(隔离)。也许问题在于您的视图模型绑定,请尝试以下代码 -
<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)绑定,以确保绑定正在发生。
顺便说一下,你在输出窗口中得到了哪些绑定失败消息?