MVVM C#中具有两个不同类的两个不同属性的组合框绑定



我不得不重写我的问题。下面的黑引号部分是编辑之前的这篇文章。

我有两个属性:capacitiveCurrentShowProductSum。在我的MVVM应用程序发生任何更改之前,我曾将capacitiveCurrent与构造函数中设置的值绑定,该值始终为15。

capacitiveCurrent被放在不同的类别LineOut中,代码:

容量当前属性

private double _capacitiveCurrent;
public double CapacitiveCurrent
{
get { return _capacitiveCurrent; }
set
{
if (_capacitiveCurrent != value)
{
_capacitiveCurrent = value;
OnPropertyChanged("_capacitiveCurrent");
}
}
}

第二个属性放在MainWindow.xaml.cs代码中:

ShowProductSum

public double _showProductSum;
public double ShowProductSum
{
get { return _showProductSum; }
set
{
if (_showProductSum != value)
{
_showProductSum = value;
OnPropertyChanged("ProductSum");
}
}
}

完成了设置和获取ShowProductSum的逻辑。。几乎但我对这两个属性的期望是,我希望它们显示在组合框中。这就是我所拥有的:

private ObservableCollection<double> _comboBoxCapacitiveCurrent = new ObservableCollection<double>();
public ObservableCollection<double> ComboBoxCapacitiveCurrent
{
get
{
_comboBoxCapacitiveCurrent.Clear();
_comboBoxCapacitiveCurrent.Add(lineWy.capacitiveCurrent);
_comboBoxCapacitiveCurrent.Add(ShowProductSum);
return _comboBoxCapacitiveCurrent;
}
set
{
if (_comboBoxCapacitiveCurrent != value)
{
_comboBoxPradPojemnosciowy = value;
OnPropertyChanged("ComboBoxCapacitiveCurrent");
}
}
}
public double SelectedItem { get; set; }

组合框

<DataGridTemplateColumn Header="Capacitive Current " HeaderStyle="{StaticResource ZwarcioweHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox 
ItemsSource="{Binding Path=ComboBoxCapacitiveCurrent}"
SelectedValue="{Binding Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
>
</ComboBox>
</DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>

CombBox存在,但combobox的下拉列表中没有任何内容。这个组合框下面有一些空白处。一切都实现了INotifyPropertyChanged接口。

提前谢谢。

我是MVVM C#的绝对初学者。我正在尝试绑定两个属性其位于两个不同的类别中。

第一个属性是来自的public double capacitiveCurrent { get; set; }一个类,在此之前,我使用此属性以法线查看它binding-显示了初始化的值。

public double productLengthShortCircuitCurrent
{
get { return length* capacitiveShortCircuitCurrentwithGround; }
set { }
} is a combination of the two `length` and `capacitiveShortCircuitCurrentwithGround` both with getters and

setters。

ComboBox放置在内

`<DataGridTemplateColumn Header"ABC">
<DataGridTemplateColumn.CellTemplate
<DataTemplate>
<ComboBox .../>`

我想做的是将这两处房产列在组合框和:

  1. 我需要CCD_ 10从视图中进行编辑
  • productLengthShortCircuitCurrent应该是所有设定值的和(因此是和积(。。我应该调用函数来执行此操作吗然后将其绑定到组合框
  • **我已经设法设置并获得了这个属性,并获得了下面的ProductSum属性。。这一切都是为了展示两者组合框中的属性。

    我真的很困惑。找了两天答案都没找到想出一个主意。也许我的知识是肤浅的但是。。。尝试绑定具有类似public IConnectedProperties Categories的接口和具有的私有_category列表的这两个属性getter和setter。

    在您的setter:中修复此问题

    _comboBoxPradPojemnosciowy = value; // binding will loose the instance
    

    使用"清除(("one_answers"添加(("。当您更改实例时,绑定仍在旧实例中查找。

    _comboBoxPradPojemnosciowy.Clear();
    foreach (var item in value)
    {
    _comboBoxPradPojemnosciowy.Add(item);
    }
    OnPropertyChanged("ComboBoxCapacitiveCurrent");
    

    如果ShowProductSum部分正在工作,也许这是您唯一需要修复的问题。

    组合框绑定:

    ItemsSource="{Binding Path=ComboItems}"   
    SelectedItem="{Binding Path=SelectedItem}"
    

    Carete属性和字段:

    private ObservableCollection<double> comboItems = new ObservableCollection<double>();
    public ObservableCollection<double> ComboItems{
    get
    {
    this.comboItems.Clear();
    this.comboItems.Add(prad_pojemnosciowy);
    this.comboItems.Add(iloczyn_dlugosc_pojemnościowy_prąd_zwarcia_z_ziemią);
    return this.comboItems;
    } 
    set;
    }
    public double SelectedItem{get;set}
    

    请记住通知的setters中"ComboItems"的属性已更改这两个属性。

    将类的两个实例放在一个视图模型类中,并将其绑定到适当的值。"ViewModels"用于在视图和模型之间进行通信。因此,将与视图交互的所有逻辑都放在视图模型中。然后,您必须将视图模型绑定到视图,并在对象上设置数据上下文。如果你想在实例中绑定你的属性,你可以使用instance.property进行绑定

    也许这些会对你有所帮助。的基本解释

    最新更新