1

私はDataGrid、XAMLに従ってください:

    <DataGrid ItemsSource="{Binding Path=propCollection}"
              SelectedItem="{Binding Path=SelectProp, Mode=TwoWay}"
              Margin="-1,159,0,0" 
              RowDetailsVisibilityMode="Visible" 
              AreRowDetailsFrozen="False" 
              CanUserReorderColumns="False" 
              CanUserSortColumns="True" 
              CanUserResizeRows="False"  
              SelectionUnit="FullRow" 
              AlternatingRowBackground="{x:Null}" 
              SelectionChanged="dgProprietarios_SelectionChanged"
              AlternationCount="0"
              Height="200" 
              HorizontalAlignment="Left"
              Name="dgProprietarios" 
              VerticalAlignment="Top" 
              Width="645" 
              AutoGenerateColumns="False">
                 <...Columns...>
    </DataGrid>

Window_Loadedで、のことを行います。

dgProprietarios.DataContext = new ProprietariosViewModel(new Dictionary<string, string>());

私のProprietariosViewModelは次のとおりです。

public CollectionProprietarios propCollection { get; set; }

public ProprietariosViewModel(Dictionary<string, string> Where)
{
    propCollection = new CollectionProprietarios(Where);
}

CollectionProprietariosクラスはObservableCollectionを継承し、のコードを持ちます。

    public CollectionProprietarios(Dictionary<string, string> Where)
    {
        Add(new Dados(Where));
    }

    public new void Add(Dados dados)
    {
        base.Add(dados);
    }

クラスDadosのコードは次のとおりです。

public DataTable ProprietariosRetorno { get; private set; }

public Dados(Dictionary<string, string> Where)
{

    var ado = new ADO();
    ProprietariosRetorno = ado.RetornaSelect(MontaQuery(Where));

}

関数MontaQueryは、SELECT句を含む文字列を作成するだけで、RetornaSelectはこのクエリを実行します。

クラスADOは、インスタンス化されると、データベースとテーブルが存在しない場合はそれを作成するだけです。

問題は、それがすべて機能していることです。デバッグ中に、DataContext内の値を取得でき、値を含むDataTableが含まれています。ただし、何らかの理由で、プログラムの実行時にDataGridに表示されません。

だから問題は、私が間違っているのは何ですか?

4

1 に答える 1

1

使用してみてください

dgProprietarios.DataContext = new ProprietariosViewModel(new Dictionary<string, string>());
dgProprietarios.Items.Refresh();
于 2012-12-04T12:58:46.817 に答える