2017-01-09 3 views
0

Ich habe ein Problem. Wie bindet man eine ItemsSource Eigenschaft an ein NumericUpDown? So funktioniert es nicht. Danke!NumericUpDown Wert Bindung

<DataGrid ItemsSource="{Binding Articles}"> 
    <DataGrid.Columns> 
      <DataGridTemplateColumn MinWidth="100" 
           Header="Amount" 
           MaxWidth="{Binding MinWidth, RelativeSource={RelativeSource Self}}"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <mahApps:NumericUpDown Value="{Binding Amount, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"> 
         <i:Interaction.Triggers> 
          <i:EventTrigger EventName="ValueChanged"> 
           <i:InvokeCommandAction CommandParameter="{Binding}" 
                 Command="{Binding DataContext.RefreshValuesCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" /> 
          </i:EventTrigger> 
         </i:Interaction.Triggers> 
        </mahApps:NumericUpDown> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

EDIT

FIRST: Anzahl (Spanisch) = Betrag (Englisch)

enter image description here enter image description here

+0

Mögliches Duplikat [Wie Zweiweg NumericUpDown an dem Mitglied Klasse verbindlich machen] (http://stackoverflow.com/questions/6709126/how-make-two-way-binding-numericupdown-to-member- Klasse) –

+0

Was genau funktioniert nicht? Haben Sie einen spezifischen Fehler, d. H. Die Ausgabe für die bindende ItemsSource, oder funktioniert das und die internen Bindungen funktionieren nicht? Ziehen Sie Snoop in Betracht, um festzustellen, welche Datenbindungen fehlgeschlagen sind. – LordWilmore

+0

Was ich versuche zu tun ist: Ich habe eine Liste von Elementen und ich möchte den "Betrag" mit numericupdown ändern. Wenn Sie einen "Betrag" ändern, wird ein Befehl ausgeführt, der alle Preise neu berechnet. Ich muss jeden numerischen updown an jeden "Betrag" des Gegenstandes binden. Gehe zu Bearbeiten, um mehr Code und Bild zu sehen. Der Fehler: Die Eigenschaft "Amount" im Datenkontext des Typs "System.Windows.Controls.DataGrid" – avechuche

Antwort

1

Wenn die Menge Eigenschaft wird in der gleichen Klasse wie der Artikel Eigenschaft definiert Sie sollten an den DataContext (DataContext.Amount) des DataGrids binden:

<mahApps:NumericUpDown Value="{Binding DataContext.Amount, UpdateSourceTrigger=PropertyChanged, 
    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="ValueChanged"> 
      <i:InvokeCommandAction CommandParameter="{Binding}" 
            Command="{Binding DataContext.RefreshValuesCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</mahApps:NumericUpDown> 

Wenn die Menge Eigenschaft wird in dem Datenobjekt (Artikel oder was auch immer Sie es nennen) definiert es Klasse ist einfach:

<mahApps:NumericUpDown Value="{Binding Amount}"> 

Edit: Sie sollten auch die Update der Bindung an Property gesetzt :

<mahApps:NumericUpDown Value="{Binding Amount, UpdateSourceTrigger=PropertyChanged}" /> 
+0

kann nicht aufgelöst werden Thx für die Antwort. Ich habe diese beiden Möglichkeiten bereits ausprobiert und es hat nicht funktioniert. Betrag ist eine Artikeleigenschaft (Klasse). Artikel ist observableCollection, die ich in der ItemSource verwende. – avechuche

+0

Stellen Sie sicher, dass die Eigenschaft * public * und vom Typ double ist. – mm8

+0

Wenn ich eine einfache Spalte verwenden es funktioniert perfekt. Natürlich kann ich damit nur einen Wert zeigen und nicht ändern. – avechuche

Verwandte Themen