c# - WPF Binding don't update data -


so problem whatever changing text in textbox doesn't change property in code although bind it. i'm using mvvm pattern so: model:

public class shipment {     public shipment() {}      public int shipmentid {get;set;}      //lp , payer     [required]     public long externalnumber {get ; set;}     public long mpknumber { get; set; }     public long contractnumber { get; set; }     public payer payer { get; set; }     public payment payment { get; set; }     //and more i'm working on these right } 

my viewmodel:

 public class preparenewviewmodel : inotifypropertychanged  {     private shipment shipment { get; set; }      public shipment shipment     {                 {             return shipment;         }         set         {             if (shipment != value)             {                 shipment = value;                 raisepropertychanged("shipment");             }         }     }       public preparenewviewmodel()     {         shipment = new shipment();     }      public event propertychangedeventhandler propertychanged;      private void raisepropertychanged(string propertyname)     {         propertychangedeventhandler handler = propertychanged;         if (handler != null)         {             handler(this, new propertychangedeventargs(propertyname));         }     } 

and view:

<page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"        xmlns:controls ="clr-namespace:system.windows.controls;assembly=system.windows.controls.input.toolkit"        xmlns:themes="clr-namespace:microsoft.windows.themes;assembly=presentationframework.aero"        x:class="smartshipping.views.pages.prepearenew"        xmlns:local ="clr-namespace:smartshipping.viewmodels"        xmlns:system="clr-namespace:system;assembly=mscorlib"        xmlns:model ="clr-namespace:smartshipping.model"        mc:ignorable="d"        d:designheight="889" d:designwidth="959"        title="prepearenew">      <page.datacontext>         <local:preparenewviewmodel/>     </page.datacontext>      <page.resources>         <objectdataprovider x:key="datafromenumpayer" methodname="getvalues" objecttype="{x:type system:enum}">             <objectdataprovider.methodparameters>                 <x:type typename="model:payer"/>             </objectdataprovider.methodparameters>         </objectdataprovider>          <objectdataprovider x:key="datafromenumpayment" methodname="getvalues" objecttype="{x:type system:enum}">             <objectdataprovider.methodparameters>                 <x:type typename="model:payment"/>             </objectdataprovider.methodparameters>         </objectdataprovider>     </page.resources>      <groupbox header="list przewozowy pŁatnik" horizontalalignment="left"               verticalalignment="top" margin="10,131,0,0" height="146" width="458">         <grid horizontalalignment="left" width="448" margin="0,0,-2,0">             <grid.columndefinitions>                 <columndefinition width="28*"/>                 <columndefinition width="28*"/>                 <columndefinition width="56*"/>             </grid.columndefinitions>              <label content="nr zewnętrzny:" horizontalalignment="left"                     verticalalignment="top" margin="10,8,0,0" width="138" grid.columnspan="2"/>             <textbox height="24" margin="10,31,10,0" textwrapping="wrap"                       text="{binding shipment.externalnumber, validatesondataerrors=true, updatesourcetrigger=propertychanged, mode=twoway}"                       verticalalignment="top" grid.columnspan="2"/>              <label content="nr mpk:" horizontalalignment="left" verticalalignment="top"                     margin="0,10,0,0" grid.column="2" width="73"/>             <textbox height="24" margin="0,31,10,0" textwrapping="wrap"                       text="{binding shipment.mpknumber, validatesondataerrors=true, updatesourcetrigger=propertychanged}"                       verticalalignment="top" grid.column="2"                       background="{dynamicresource {x:static systemcolors.controllightlightbrushkey}}"/>              <label content="płatnik usługi:" horizontalalignment="left"                     verticalalignment="top" margin="10,69,0,0"/>             <combobox itemssource="{binding source={staticresource datafromenumpayer}}"                         margin="10,92,0,0" verticalalignment="top" height="24"                        background="{dynamicresource {x:static systemcolors.controllightlightbrushkey}}"/>              <label content="forma płatności:" horizontalalignment="left"                     verticalalignment="top" margin="5,69,0,0" grid.column="1"/>             <combobox selecteditem="{binding shipment.payment}"                        itemssource="{binding source={staticresource datafromenumpayment}}"                        margin="10,92,10,0" verticalalignment="top" height="24"                        background="{dynamicresource {x:static systemcolors.controllightlightbrushkey}}"                        grid.column="1"/>              <label content="nr umowy:" horizontalalignment="left"                     verticalalignment="top" margin="0,66,0,0" grid.column="2"/>             <textbox horizontalalignment="left" height="24"                       margin="0,92,0,0" textwrapping="wrap"                       verticalalignment="top" width="214" grid.column="2"                       text="{binding shipment.contractnumber, validatesondataerrors=true}"/>         </grid>     </groupbox> </page> 

could don't bind every property of model ?

a rule of thumb mvvm viewmodel , view have 1-to-1 relationship. make more sense me, if had properties each member of shipment. otherwise, shipment's members not updated. although intuitively shipment technically changing, properties updated when update value - not members.

your textboxes technically bound 1 way. when change them, members of shipment not updated. curious if possible tested myself in project working on , sure enough changing model's members didn't proc raisepropertychanged.


Comments

  1. Bardzo interesujące. Pozdrawiam serdecznie.

    ReplyDelete
  2. Bardzo interesujące. Pozdrawiam serdecznie.

    ReplyDelete

Post a Comment

Popular posts from this blog

c++ - QTextObjectInterface with Qml TextEdit (QQuickTextEdit) -

xcode - Swift Playground - Files are not readable -

windows - How to automate a file conversion xwm to mp3 with xwmaencode.exe using bat file -