WPF/MVVM:需要支持方法/函数逻辑的属性声明
我为两个WPF组合框设置了两个属性:一个用于月,一个用于日。WPF/MVVM:需要支持方法/函数逻辑的属性声明,wpf,mvvm,Wpf,Mvvm,我为两个WPF组合框设置了两个属性:一个用于月,一个用于日。MonthIndex属性如下所示: private int monthIndex = DateTime.Today.Month - 1; public int MonthIndex { get { return monthIndex; } set { if (monthIndex != value) { monthIndex = value;
MonthIndex
属性如下所示:
private int monthIndex = DateTime.Today.Month - 1;
public int MonthIndex
{
get { return monthIndex; }
set
{
if (monthIndex != value)
{
monthIndex = value;
RaisePropertyChanged("MonthIndex");
}
}
}
我需要设置DayIndex属性,但与Month属性不同,它需要计算-不能使用像这样的简单声明
private int _dayIndex = DateTime.Today.Day - 1;
每个日历日可以有0个或多个事件。e、 例如,如果6/30有三个事件,这些事件将被存储为30、30.1和30.2(在可观察的收集日列表和每个事件的相应索引中)
下面是DayIndex的XAML、声明和方法:
查看:
<ComboBox Name="cboDay"
ItemsSource="{Binding DaysList, Mode=OneTime}"
DisplayMemberPath="fltDay"
SelectedIndex="{Binding DayIndex, Mode=TwoWay}"
IsEditable="True" />
public ObservableCollection<Day> DaysList { get; set; }
private int _dayIndex;
public int DayIndex
{
get
{
// perform some calculation logic;
return _dayIndex;
}
set
{
if (_dayIndex != value)
{
_dayIndex = value;
RaisePropertyChanged("DayIndex");
}
}
}
视图模型:
<ComboBox Name="cboDay"
ItemsSource="{Binding DaysList, Mode=OneTime}"
DisplayMemberPath="fltDay"
SelectedIndex="{Binding DayIndex, Mode=TwoWay}"
IsEditable="True" />
public ObservableCollection<Day> DaysList { get; set; }
private int _dayIndex;
public int DayIndex
{
get
{
// perform some calculation logic;
return _dayIndex;
}
set
{
if (_dayIndex != value)
{
_dayIndex = value;
RaisePropertyChanged("DayIndex");
}
}
}
public observetecollection DaysList{get;set;}
私人综合指数;
公共整数日索引
{
得到
{
//执行一些计算逻辑;
返回日指数;
}
设置
{
如果(_dayIndex!=值)
{
_dayIndex=数值;
RaisePropertyChanged(“DayIndex”);
}
}
}
如何处理dayIndex的声明,使其保持更新状态(以便我可以将其值用于其他代码)?不要在属性getter中执行任何计算。而是计算新的属性值,集合
DayIndex=calculatedValue
。就像@Clemens所说的,我确信你不需要每次都重新计算这个值。您必须确定需要重新计算它的位置(当您加载数据时;当您更改月份时;以及当您创建新事件时,可能?),然后从那里调用计算并相应地更新DayIndex
值模式比ItemsSource/SelectedIndex多。只要保持引用同步(SelectedIndex中的实例必须在ItemsSource中),您就已经完成了,继续下一个任务?不要在属性getter中执行任何计算。而是计算新的属性值,集合DayIndex=calculatedValue
。就像@Clemens所说的,我确信你不需要每次都重新计算这个值。您必须确定需要重新计算它的位置(当您加载数据时;当您更改月份时;以及当您创建新事件时,可能?),然后从那里调用计算并相应地更新DayIndex
值模式比ItemsSource/SelectedIndex多。只要保持引用同步(SelectedIndex中的实例必须在ItemsSource中),您就已经完成了,继续下一个任务?