1

InfragisticsxamDataGridで遊んでいます。「フィールド」(=セル)にカスタムUserControlを表示し、そのためにフィールドの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は機能しません。

フィールドを定義するもう1つの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}" />
4

1 に答える 1

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 (方法 2) を配置して、バインディングが行われていることを確認します

ところで、出力ウィンドウに表示されるバインディング エラー メッセージは何ですか?

于 2009-11-15T12:03:02.033 に答える