0

WPFToolkit の DataGrid を使用し、編集ボタンを機能させようとしています。列は次のとおりです。

<my:DataGridTemplateColumn>
                    <my:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock>
                                <Hyperlink   Command="{Binding EditVenueCommand}" >Edit</Hyperlink>


                            </TextBlock>
                        </DataTemplate>
                    </my:DataGridTemplateColumn.CellTemplate>
                </my:DataGridTemplateColumn>

次のエラーが表示されます。

BindingExpression パス エラー: 'EditVenueCommand' プロパティが 'object' ''Venue' (HashCode=18626439)' に見つかりません。BindingExpression:Path=EditVenueCommand; DataItem='会場' (HashCode=18626439); ターゲット要素は「ハイパーリンク」 (HashCode=32883419) です。ターゲット プロパティは 'Command' (タイプ 'ICommand') です。

EditVenueCommand は、グリッドの外側にあるときに完全に起動しています。

また、DataGridHyperlinkColumn の代わりに DataGridTemplateColumn を使用している理由は、それを機能させることができなかったためです:(

4

1 に答える 1

1

コードで何が起こっているかというと、バインディングが "EditVenueCommand" を、データ テンプレートのデータ コンテキストで検出する必要があるプロパティとして扱っているということです。

いずれにせよ、バインディングを使用してコマンドをフックするべきではありません。名前空間 + タイプ + コマンド フィールドを次のように指定するだけです。

Command="myns:MyType.EditVenueCommand"

mys が CLR 名前空間にマップされている場所。例えば:

<Window xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssemblyName" ...
于 2009-10-22T02:01:03.647 に答える