为什么双向绑定不能按预期方式工作?

问题描述

我需要绑定方面的帮助。双向模式根本不起作用。 我用传递给构造函数的数据填充窗口,并且工作正常。 问题是,即使我使用双向绑定,也无法重写在窗口控件中估算的某些数据。 下面是我打开窗口的方式

    var tempInregistrare = BaseConnection.GetInregistrareById(itemSelected.InregistrareId.ToString());
                var tichet = new TichetView(new InregistrareModel { 
                    Id =tempInregistrare.Id,NumeFurnizor = tempInregistrare.NumeFurnizor,IdFurnizor = tempInregistrare.IdFurnizor,NumeProdus = tempInregistrare.NumeProdus......
ticket.Show();

这里是DataContext设置为self的窗口构造函数。

  public TichetView(InregistrareModel inregistrare)
  {
            InitializeComponent();
            InregistrareModel = inregistrare;
            DataContext = this;
            grdButtonsPrint.Visibility = Visibility.Visible;
   }

  public InregistrareModel InregistrareModel
        {
            get => inregistrareModel;
            set
            {
                if (value != inregistrareModel)
                {
                    inregistrareModel = value;
                    NotifyPropertyChanged();
                }
            }
        }
 public class InregistrareModel
    {
        public int Id { get; set; }
        public int IdProdus { get; set; }
        public int IdFurnizor { get; set; }
        public string NumeProdus { get; set; }
        public string NumeFurnizor { get; set; }
        public string NrAuto { get; set; }
        public string NumeSofer { get; set; }
        public double CantitateInitiala { get; set; }
        public double CantitateIesire { get; set; }
        public double Umiditate { get; set; }
        public double CantitateScazuta { get; set; }
        public double CantitateMarfa { get; set; }
        public DateTime DataIntrare { get; set; }
        public DateTime DataIesire { get; set; }
        public FurnizorModel Furnizor { get; set; }
        public int NIR { get; set; }
    }

这是窗口的Xaml

                <TextBlock Grid.Row="2" Grid.Column="2" VerticalAlignment="Center">Intrare</TextBlock>                
                <TextBox Grid.Row="2" Grid.Column="3" Text="{Binding InregistrareModel.CantitateInitiala}"/>
   
                
                <TextBlock Grid.Row="4" Grid.Column="2" VerticalAlignment="Center">Umiditatea (%)</TextBlock>
                <TextBox x:Name="txtUmiditate" Grid.Row="4" Grid.Column="3" IsReadOnly="False" Text="{Binding InregistrareModel.Umiditate,Mode=TwoWay}"/>   
                
                <TextBlock Grid.Row="5" Grid.Column="2" VerticalAlignment="Center">Cantitatea scazuta</TextBlock>
                <TextBox x:Name="txtCantitateScazuta" Grid.Row="5" Grid.Column="3" IsReadOnly="False" Text="{Binding InregistrareModel.CantitateScazuta,Mode=TwoWay}"/>
                
                <TextBlock Grid.Row="6" Grid.Column="2" VerticalAlignment="Center">Iesire</TextBlock>
                <TextBox Grid.Row="6" Grid.Column="3" Text="{Binding InregistrareModel.CantitateIesire}"/>
                
                <TextBlock Grid.Row="7" Grid.Column="2" VerticalAlignment="Center">Dată iesire</TextBlock>
                <TextBox Grid.Row="7" Grid.Column="3" Text="{Binding InregistrareModel.DataIesire,StringFormat='{}{0:HH:HH dd/M/yyyy}'}"/>
                
                <TextBlock Grid.Row="10" Grid.Column="2" VerticalAlignment="Center">Net</TextBlock>
                <TextBox Grid.Row="10" Grid.Column="3" Text="{Binding InregistrareModel.CantitateMarfa}"/>

所有文本框都填充有数据,需要我手动填写的第二和第三个。 我现在无法实现的目标是从第一个文本框(InregistrareModel.CantitateInitiala)中获取数据以在第3个文本框(txtCantitateScazuta)中键入一些数据,并在最后一个文本框中显示结果,以便在用此数据更新数据库之后。 / p>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)