Wie binden XamDataGrid zu-Modell-Eigenschaften durch ViewModel

In meinem C# - /WPF-Anwendung, und ich bin versucht zu binden eine Infragistics WPF XamDataGrid an eine ObservableCollection. MyViewModel stellt die Eigenschaft Model. Wenn ich die Eigenschaft hinzufügen, dessen Wert ich will angezeigt MyViewModel, funktioniert alles einwandfrei. Unten sehen Sie ein Beispiel, wo ich bin, die Bindung an die UnitID Eigenschaft verfügbar gemacht werden, von einer Instanz einer MyViewModel enthalten in der UnitsOfMeasure ObservableCollection.

Wenn ich "Namen" zu " - Modell.Namen", zur Laufzeit die korrekte Anzahl von Zeilen im Datenblatt angezeigt, aber alle Felder sind leer. Kein Laufzeitfehler ausgelöst.

Mein workaround ist das hinzufügen jede Eigenschaft zu MyViewModel und referenzieren Sie die Eigenschaft in dem Modell in jeder getter und setter. Macht für redundanten code und nicht einverstanden mit Laurent-demo ist.

Diese xaml funktioniert:

<igEditors:XamDataGrid Theme="Royale" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Stretch" Margin="2" Name="xamDataGridUnitsOfMeasure" DataSource="{Binding Path=UnitsOfMeasure}"  VerticalAlignment="Stretch">
    <igEditors:XamDataGrid.FieldLayoutSettings>
        <igEditors:FieldLayoutSettings AutoGenerateFields="False"/>
            </igEditors:XamDataGrid.FieldLayoutSettings>
                <igEditors:XamDataGrid.FieldLayouts>
                    <igEditors:FieldLayout IsDefault="True">
                        <igEditors:FieldLayout.Fields>
                           <igEditors:Field Name="UnitID" Label="UOM ID">
                              <igEditors:Field.Settings>
                                 <igEditors:FieldSettings AllowEdit="False"/>
                              </igEditors:Field.Settings>
                           </igEditors:Field>
  .
  .
  .

Ändern UnitID von Modell zu Modell.UnitID funktioniert nicht:

<igEditors:XamDataGrid Theme="Royale" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Stretch" Margin="2" Name="xamDataGridUnitsOfMeasure" DataSource="{Binding Path=UnitsOfMeasure}"  VerticalAlignment="Stretch">
    <igEditors:XamDataGrid.FieldLayoutSettings>
        <igEditors:FieldLayoutSettings AutoGenerateFields="False"/>
            </igEditors:XamDataGrid.FieldLayoutSettings>
                <igEditors:XamDataGrid.FieldLayouts>
                    <igEditors:FieldLayout IsDefault="True">
                        <igEditors:FieldLayout.Fields>
                           <igEditors:Field Name="Model.UnitID" Label="UOM ID">
                              <igEditors:Field.Settings>
                                 <igEditors:FieldSettings AllowEdit="False"/>
                              </igEditors:Field.Settings>
                           </igEditors:Field>
  .
  .
  .

Hier ist ein Teil des ViewModel, das funktional:

public class UnitOfMeasureViewModel : ViewModelBase
{
    ///<summary>
    ///Initializes a new instance of the UnitOfMeasureViewModel class.
    ///</summary>
    public UnitOfMeasureViewModel(UnitOfMeasure model)
    {
        Model = model;
        //Model.PropertyChanged += (s, e) =>
        //   {
        //       RaisePropertyChanged(e.PropertyName);
        //   };
    }

    public UnitOfMeasure Model
    {
        get;
        private set;
    }

    public string UnitID
    {
        get
        {
            return Model.UnitID;
        }

        set
        {
            Model.UnitID = value;
        }
    }
InformationsquelleAutor Seth Abady | 2013-04-19
Schreibe einen Kommentar