我不得不重写我的问题。下面用黑引号括起来的部分是编辑之前的帖子。
我有两个属性:capacitiveCurrent
和ShowProductSum
。
在对MVVM应用程序进行任何更改之前,我曾经将capacitiveCurrent
与构造器中设置的值绑定在一起-始终为15。
capacitiveCurrent
放在不同的类LineOut
中,代码:
capacitiveCurrent属性
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
设置者。
组合框位于
内`<DataGridTemplateColumn Header"ABC"> <DataGridTemplateColumn.CellTemplate <DataTemplate> <ComboBox .../>`
我想做的是在列表中列出这两个属性 ComboBox和:
- 我需要
capacitiveCurrent
才能从视图中对其进行编辑,
productLengthShortCircuitCurrent
应该是所有设置值的总和(因此是总和)。我应该调用函数来做到这一点吗? 然后将其绑定到ComboBox?**我已经想过要设置并获取此属性,并已实现以下的
ProductSum
属性。这都是关于显示两个属性 ComboBox中的属性。我真的很困惑。搜索了两天的答案,没来 想出一个主意。也许我的知识是肤浅的,但是...试图束缚 界面的两个属性,例如
public IConnectedProperties Categories
和私有_category
列表, 获取器和设置器。
答案 0 :(得分:0)
将您的类的两个实例放在一个viewmodel类中,并将其绑定到适当的值。 “ ViewModels”用于在视图和模型之间进行通信。因此,将所有用于与视图交互的逻辑放入视图模型中。然后,您必须将viewmodel绑定到视图,然后在对象上设置datacontext。如果要在实例中绑定属性,可以使用Instance.Property进行绑定
也许these会为您提供帮助。 对于基本的explanation
答案 1 :(得分:0)
在设置器中解决此问题:
_comboBoxPradPojemnosciowy = value; // binding will loose the instance
使用“ Clear()”和“ Add()”。更改实例时-绑定仍在旧实例中查找。
_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”的属性已更改 这两个属性。