вот мое беспокойство.У меня есть два DatePicker, которые иногда должны запускаться одновременно (я выбираю агента, получаю дату его начала и дату его окончания).
У меня есть метод, который будет извлекать планирование в соответствии с датамипроблема в том, что одновременно требуется дата начала + дата окончания + нормальный триггер (когда я выбираю агента, отображается его расписание по умолчанию). Таким образом, результат дает мне несколько данных одновременно (я получаюсообщение об ошибке "нет планирования" + планирование позади, что не имеет никакого смысла)
Вот код:
<DatePicker Grid.Column="1" Name="DatePickerStart"
Grid.Row="5"
Margin="40,5"
Height="25"
DisplayDateEnd="{Binding DateEnd}"
SelectedDate="{Binding DateStart}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedDateChanged">
<i:InvokeCommandAction Command="{Binding LoadMatrice}" CommandParameter="{Binding SelectedDate, RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</DatePicker>
<TextBlock Grid.Row="4"
Grid.Column="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="16"
Text="Date Fin:"/>
<DatePicker Grid.Column="2" Name="DatePickerEnd"
Grid.Row="5"
Margin="40,5"
Height="25"
DisplayDateStart="{Binding DateStart}"
SelectedDate="{Binding DateEnd}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedDateChanged">
<i:InvokeCommandAction Command="{Binding LoadMatrice}" CommandParameter="{Binding SelectedDate, RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</DatePicker>
VM:
private DateTime _DateDebut;
public DateTime DateDebut
{
get
{
return _DateDebut;
}
set
{
if (value != _DateDebut)
{
_DateDebut = value;
RaisePropertyChanged(nameof(DateDebut));
}
}
}
private DateTime _DateFin;
public DateTime DateFin
{
get
{
return _DateFin;
}
set
{
if (value != _DateFin)
{
_DateFin = value;
RaisePropertyChanged(nameof(DateFin));
}
}
}
Когда я выбираю что-то в своем поле со списком:
private string _SelectedResultList;
public string SelectedResultList
{
get
{
return _SelectedResultList;
}
set
{
if (value != _SelectedResultList)
{
_SelectedResultList = value;
//GetIdSelectedResultList();
foreach (var periode in PeriodesModulation)
{
if (value == valueILookingFor)
{
DateStart = periode.Start;
DateEnd = periode.End;
}
}
RaisePropertyChanged(nameof(SelectedResultList));
}
}
}
Метод, который срабатывает:
LoadMatrice = new RelayCommand(async () =>
{
await GetParametresMatrice();
});
и:
public async Task GetParametresMatrice()
{
ErrorMatrice = null;
if (_SelectedChoiceList != null) // important pour ne pas rechercher avec les dates.today du reset avant qu'on ai fait la demande
{
GetMatricule(matriculeSelectedAgent);
Planning = new ObservableCollection<Planning>(await _dataService.GetPlanning(matriculeSelectedAgent, _dataService.ParamGlobaux.IDEtablissement, DateStart, DateEnd));
GetIdMatrice(Planning);
Matrice = new ObservableCollection<Matrix>(await _dataService.GetMatrice(idMatrice));
}
}
Я считаю количество найденного планированияи:
private void GetIdMatrice(ObservableCollection<Planning> planning)
{
idMatrice = null;
if (planning.Count > 0)
{
if (planning.Any(p => p.IDMatrice == null))
{
ErrorMatrice = $"Pas de matrice trouvées, modification impossible";
}
else if (planning.GroupBy(p => p.IDMatrice).Count() > 1)
{
ErrorMatrice = $"Deux matrices différentes trouvées, modification impossible";
}
else
{
idMatrice = planning.First().IDMatrice;
}
}
else
{
ErrorMatrice = $"Pas de planning trouvé sur cette période.";
}
}
Последняя функция GetParametresMatrice () повторяется несколько раз, что является нормальным, но в то же время проблематичным.Я бы хотел, чтобы петли были сделаны одна за другой.
Как только первая «загрузка» прошла, все в порядке.Если я изменю дату начала или дату окончания, график корректируется.Это действительно только тогда, когда я выбираю планирование и обе даты загружаются.
Редактировать: нет проблем при загрузке макета, потому что строка "if (_SelectedChoiceList! = Null)".Это мой комбобокс, так что это прекрасно.проблема заключается в том, что я выбираю агента в выпадающем списке, и StartDate / EndDate изменяются одновременно.
EDIT 2:
Когда я отображаю результат, у меня есть расписание + сообщение об ошибке.Что обычно невозможно, Planning.count не может быть> 1 И <1 </p>
Любые советы?
Заранее спасибо.