c# - ComboBox 绑定来自 MVVM C# 中两个不同类的两个不同属性
问题描述
我不得不重写我的问题。下面的黑引号部分是编辑前的这篇文章。
我有两个属性:capacitiveCurrent
和ShowProductSum
。在我的 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
已经完成......几乎。但是我对这两个属性的期望是我希望它们出现在 ComboBox 中。这就是我所拥有的:
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>
组合框存在,但组合框的下拉列表中没有任何内容。此组合框下方的一些空白区域。一切都实现了 INotifyPropertyChanged 接口。
提前致谢。
我是 MVVM C# 的绝对初学者。我正在尝试绑定位于两个不同类中的两个属性。
第一个属性
public double capacitiveCurrent { get; set; }
来自一个类,在此之前我使用这个属性通过普通绑定查看它 - 显示了初始化值。public double productLengthShortCircuitCurrent { get { return length* capacitiveShortCircuitCurrentwithGround; } set { } } is a combination of the two `length` and `capacitiveShortCircuitCurrentwithGround` both with getters and
二传手。
ComboBox 放在里面
`<DataGridTemplateColumn Header"ABC"> <DataGridTemplateColumn.CellTemplate <DataTemplate> <ComboBox .../>`
我要做的是在 ComboBox 中列出这两个属性,并且:
- 我需要
capacitiveCurrent
可以从视图中编辑,
productLengthShortCircuitCurrent
应该是所有设定值的总和(所以是总和产品)。我应该调用一个函数来执行此操作,然后将其绑定到 ComboBox 吗?**我已经设置和获取此属性并实现了获取
ProductSum
下面的属性。这完全是关于在 ComboBox 中显示这两个属性。我真的很困惑。找了两天的答案,没有想到。也许我的知识很浅,但是......试图将这两个属性绑定到一个接口,比如一个带有 getter 和 setter
public IConnectedProperties Categories
的私有列表。_category
解决方案
在您的设置器中修复此问题:
_comboBoxPradPojemnosciowy = value; // binding will loose the instance
使用“清除()”和“添加()”。当您更改实例时 - 绑定仍在旧实例中查找。
_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}
请记住在两个属性的设置器中通知“ComboItems”的属性已更改。
推荐阅读
- json - union语句中如何调用全局函数
- django - 为 django 模型指定数据库名称
- python - VSCode 中未解决的 PyDev 导入错误?
- reactjs - 为 React 列表项生成稳定、可预测和唯一键的方法是什么?
- entity-framework - Entity Framework Core 3.1 SaveChangesAsync() 自动将异常记录到 Windows 事件查看器
- react-native - 反应原生 apk 生成
- hibernate - Grails Gorm dynamicUpdate 不会改变更新查询
- javascript - 按下浏览器上的后退按钮后 Javascript 代码不起作用
- ios - 快速计算嵌套数组的元素
- svelte - 苗条路由器 - 如何根据路由更改标头?