[英]Invoking LostFocus event from RadDatePicker inside a RadGridView in WPF
[英]Double Invokation of LostFocus event from RadDatePicker inside a RadGridView in WPF
我的UserControl中有一個telerik:RadGridView ,它具有多個列,並且具有RadDatePicker作為,
<telerik:RadGridView Grid.Row="1"
Grid.Column="0"
AutoGenerateColumns="False"
AutoExpandGroups="True"
IsReadOnly="False"
ColumnWidth="*"
ItemsSource="{Binding DataModel.FlightDetailsList, Mode=TwoWay}"
IsFilteringAllowed="False"
IsSynchronizedWithCurrentItem="False"
SelectionMode="Single"
ShowGroupPanel="False">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="Date of Travel *" DataMemberBinding="{Binding FlightDate}">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FlightDate, Mode=OneWay, StringFormat=dd-MMM-yyyy}" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
<telerik:GridViewColumn.CellEditTemplate>
<DataTemplate>
<telerik:RadDatePicker SelectedDate="{Binding Path=FlightDate, Mode=TwoWay, StringFormat=dd-MMM-yyyy, UpdateSourceTrigger=LostFocus}" DisplayFormat="Short" Culture="en-AU" />
</DataTemplate>
</telerik:GridViewColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
在這里,如果您看到我的集合FlightDetailsList是綁定到網格的數據。 telerik:RadDatePicker綁定到FlightDate屬性。
我想調用FlightDate屬性更改的屬性,因此在我已訂閱的viewmodel中,
private void FlightDetailsListCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
var _obj = (e.NewItems[0] as FlightDtls);
if (_obj != null)
(e.NewItems[0] as FlightDtls).PropertyChanged += new PropertyChangedEventHandler(FlightDtlsPropertyChanged);
}
}
private void FlightDtlsPropertyChanged(object sender, PropertyChangedEventArgs e)
{
var data = sender as FlightDtls;
if (data != null && string.Equals(e.PropertyName, "FlightDate", StringComparison.InvariantCultureIgnoreCase) && IsValidateFltDt && (DateTime.Now.Date - data.FlightDate.Value.Date).TotalDays > 2)
{
CommonMethods.ShowAlertMessage("The Date of Travel in Flight Routing must be no less than 2 days!", MessageBoxImage.Exclamation);
}
}
我面臨的問題是,每當我過去使用datepicker更改日期時,propertychanged事件都會觸發兩次。 反之,如果我通過鍵盤編輯日期,則偶數會按預期觸發一次。 從datepicker中選擇時,如何避免兩次調用。
將列的類型更改為GridViewColumn
:
<telerik:GridViewColumn Header="Date of Travel *">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FlightDate, Mode=OneWay, StringFormat=dd-MMM-yyyy}" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
<telerik:GridViewColumn.CellEditTemplate>
<DataTemplate>
<telerik:RadDatePicker SelectedDate="{Binding Path=FlightDate, Mode=TwoWay, StringFormat=dd-MMM-yyyy, UpdateSourceTrigger=LostFocus}" DisplayFormat="Short" Culture="en-AU" />
</DataTemplate>
</telerik:GridViewColumn.CellEditTemplate>
</telerik:GridViewColumn>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.