0

私はWPFのプロジェクトに取り組んでおり、いくつかのユーザーコントロールを作成する必要があります。現在、データグリッド内を移動できるナビゲーションバーを開発しているため、XAMLファイルでデータグリッドオブジェクトをナビゲーションバーに渡す必要がありますが、機能していません。

私のナビゲーションバーは次のとおりです。

<my:NavigationBar Data="{Binding ElementName=dataGrid1}" HorizontalAlignment="Left" Margin="6,6,0,0" Name="navigationBar1" VerticalAlignment="Top" />

そして私のデータグリッドは次のとおりです。

<DataGrid AutoGenerateColumns="True" Margin="11,46,12,9" Name="dataGrid1" />

そして、ナビゲーションバーの背後にある私のコードは次のとおりです。

    public static readonly DependencyProperty dataProperty =
        DependencyProperty.Register("Data",
                                    typeof(DataGrid), typeof(NavigationBar));

    private DataGrid dataGrid;
    public DataGrid Data
    {
        get
        { return dataGrid; }
        set
        { dataGrid = value; }
    }

ご覧のとおり、次のようにしてコントロールをナビゲーションバーに送信しようとしています。

Data="{Binding ElementName=dataGrid1}"

しかし、コードビハインドでdataGrid変数を使用しようとすると、dataGrid変数がnullを指しているため、例外が発生します。

それで、私は誤ってコントロールを渡しますか?私は何が間違っているのですか?私のアプローチは最も適切ですか?

前もって感謝します。

4

2 に答える 2

1

DataGridは、人間が読める形式でデータを表示することを目的としています。データをデータソースとしてコントロールに渡さないでください。datagrid1と同じデータソースからナビゲーションバーをバインドしてみてください

于 2012-05-21T18:17:20.093 に答える
0

これを処理するためのより良い方法があるかもしれないというAndriyに同意しますが、依存関係プロパティを実行する方法に問題があります。

DependencyPropertyのバッキングプロパティが正しくありません。通常の値を取得して設定するだけではありません。代わりに、SetValueメソッドとGetValueメソッドを使用することになっています。

する必要があります:

public DataGrid Data
    {
        get
        { return (DataGrid) GetValue(dataProperty); }
        set
        { SetValue(dataProperty); }
    }

参照:http ://www.wpftutorial.net/DependencyProperties.html

于 2012-05-21T18:24:03.303 に答える