¿Cómo obligar a Valuechanged of DecimalupDown Control en ViewModel? -- wpf campo con .net-core campo con mvvm camp Relacionados El problema

How to bind ValueChanged of DecimalUpDown Control on ViewModel?


1
vote

problema

Español
  graphics.TranslateTransform(offsetX, offsetY); 3  
Original en ingles
<xctk:DecimalUpDown Value="{Binding TotalAmount, Mode=TwoWay}"                    HorizontalAlignment="Right"                    Grid.Column="1"                   VerticalAlignment="Center"                     Width="120" Height="21" Margin="5 0 0 0" /> 
        
   
   

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

En MVVM, pondría la lógica xmlboiler/core/file.ttl26 xmlboiler/core/file.ttl26 xmlboiler/core/file.ttl27 Fuente A medida que se configura esta propiedad, entonces cuando se cambia el valor, por ejemplo:

  package_data = {'', ['*.xml', '*.ttl']} 8  

No hay razón para manejar el evento en sí cuando se une a una propiedad de origen.

 

In MVVM, you would put the ValueChanged logic in the setter of the TotalAmount source property as this property gets set then when value is changed, e.g.:

public decimal TotalAmount {     get { return _totalAmout; }     set { _totalAmount = value; PropertyBoundToDecimalUpDown3 = _totalAmount + _otherAmount; } } 

There is no reason to handle the event itself when you bind to a source property.

 
 
0
 
vote

Debe escribir su lógica dentro de la devolución de llamada de cada propiedad. El enfoque ValueChanged MANULLO DE EVENTOS requiere un código estrechamente acoplado detrás y romperá el patrón MVVM.

Si prefiere la forma DP:

      public decimal Value1     {         get { return (decimal)GetValue(Value1Property); }         set { SetValue(Value1Property, value); }     }     public static readonly DependencyProperty Value1Property =         DependencyProperty.Register("Value1", typeof(decimal), typeof(MyVM),              new PropertyMetadata(0m, (d, e) =>             {                 var vm = d as MyVM;                 vm.TotalValue = e.NewValue + vm.Value2;             }));      public decimal Value2     {         get { return (decimal)GetValue(Value2Property); }         set { SetValue(Value2Property, value); }     }     public static readonly DependencyProperty Value2Property =         DependencyProperty.Register("Value2", typeof(decimal), typeof(MyVM),              new PropertyMetadata(0m, (d, e) =>             {                 var vm = d as MyVM;                 vm.TotalValue = e.NewValue + vm.Value1;             }));   

O si prefiere el INotifyPropertyChanged WAY:

      public decimal Value1     {         get => _value1;         set {              _value1 = value;              TotalValue = value + Value2;             NotifyPropertyChanged();         }     }     public decimal Value2     {         get => _value2;         set         {             _value2 = value;             TotalValue = value + Value1;             NotifyPropertyChanged();         }     }   

Tenga en cuenta que escribir TotalValue = ... manejará su propia notifyPropertyChanged. Sin embargo, escriba _totalValue = ... no.

 

You must write your logic inside the callback of each property. The ValueChanged event handler approach requires tightly coupled code behind and it will break the MVVM pattern.

If you prefer the DP way:

    public decimal Value1     {         get { return (decimal)GetValue(Value1Property); }         set { SetValue(Value1Property, value); }     }     public static readonly DependencyProperty Value1Property =         DependencyProperty.Register("Value1", typeof(decimal), typeof(MyVM),              new PropertyMetadata(0m, (d, e) =>             {                 var vm = d as MyVM;                 vm.TotalValue = e.NewValue + vm.Value2;             }));      public decimal Value2     {         get { return (decimal)GetValue(Value2Property); }         set { SetValue(Value2Property, value); }     }     public static readonly DependencyProperty Value2Property =         DependencyProperty.Register("Value2", typeof(decimal), typeof(MyVM),              new PropertyMetadata(0m, (d, e) =>             {                 var vm = d as MyVM;                 vm.TotalValue = e.NewValue + vm.Value1;             })); 

Or if you prefer the INotifyPropertyChanged way:

    public decimal Value1     {         get => _value1;         set {              _value1 = value;              TotalValue = value + Value2;             NotifyPropertyChanged();         }     }     public decimal Value2     {         get => _value2;         set         {             _value2 = value;             TotalValue = value + Value1;             NotifyPropertyChanged();         }     } 

Note that writing TotalValue = ... will handle its own NotifyPropertyChanged. However writing _totalValue = ... does not.

 
 

Relacionados problema

4  ¿Cómo crea un comando ONCLICK en WPF MVVM con un botón creado programáticamente?  ( How do you create an onclick command in wpf mvvm with a programmatically created ) 
Estoy escribiendo una aplicación WPF que crea programáticamente algunos botones. ¿Cómo creas un comando ONCLICK para un botón en ViewModel? Me gustaría agrega...

0  Virtualización de datos WPF en MVVM PATTEL  ( Wpf data virtualization in mvvm pattern ) 
, Quiero saber cómo puedo implementar la virtualización de datos en el patrón MVVM? He buscado pero no encontré la virtualización de datos utilizando el patrón...

14  Permitir solo la entrada numérica en el cuadro de texto WPF  ( Allow only numeric entry in wpf text box ) 
Me gustaría validar la entrada de usuario para asegurarse de que son enteros. ¿Cómo puedo hacerlo? Pensé en usar IDataErrorInfo , que parece ser la forma "co...

1  La casilla de verificación DATCHOund de MVVM WPF no disparará eventos al ViewModel para estados revisados ​​y sin marcar  ( Mvvm wpf databound checkbox wont firing events to the viewmodel for checked and ) 
Tengo un CheckBox dentro de un DataGrid , usando wpf y mvvm; <DataGridTemplateColumn Width="80" Header="Enabled"> <DataGridTemplateColumn.CellTempla...

0  Conversión de la aplicación WPF / ADO.NET de datos de datos al patrón MVVM - Ejemplos  ( Converting wpf ado net data services application to the mvvm pattern example ) 
Tengo una aplicación WPF que fue escrita en C #. Esta solicitud no se ha escrito en mente con ningún patrón de diseño particular, pero como he aprendido .NET,...

2  Manera correcta en MVVM para impulsar estados visuales  ( Proper way in mvvm to drive visual states ) 
Dado un presentador de contenido que puede mostrar una de las 4 páginas de aplicación diferentes, y quiero desvanecer / de otra parte, animar una transición e...

47  WPF (MVVM): Cerrando una vista desde ViewModel?  ( Wpf mvvm closing a view from viewmodel ) 
¿Alguien se encuentra con una forma inteligente de cerrar una vista en un VisModel usando MVVM? ¡Tal vez haya una forma de usar la unión para señalar la vis...

0  Artensource como un enlace de dichavewiew con nulo  ( Itemssource as dataview binding with null ) 
Hice mi propio control que hereda de DataGrid para tener una propiedad llamada CurrentView Witch se establece en el evento Los elementos de Evento, acaba de c...

2  ¿Son IronPhepthon o IronRuby bien adecuado para el patrón MVVM en WPF / Silverlight?  ( Are ironpython or ironruby well suited for the mvvm pattern in wpf silverlight ) 
He estado muy felizmente usando el patrón Modelo-ViewModel (MVVM) en aplicaciones WPF y Silverlight en combinación con C #. Declarative XAML Markup y la unión...

1  La mejor manera de adjuntar fila de DataGrid a EF  ( Best way to attach row from datagrid to ef ) 
Uso de MVVM y EF ... Tengo una unión de DataGrid a un modelo de vista (usando observableCollection). El modelo de vista tiene un comando Guardar que simplemen...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos