Всплывающие окна управления взаимодействием не работают - PullRequest
0 голосов
/ 28 марта 2020

У меня есть запрос на взаимодействие, и внутри него есть несколько элементов управления, таких как таймер, radcombobox и так далее. Я хочу, чтобы события изменения этих элементов управления попали в мой класс модели представления с помощью команд призмы.

мой пример кода не работает, изменение значения пикета времени не влияет на метод OnReasonTimeChanged.

XAML-файл

<i:Interaction.Triggers>
        <i:EventTrigger SourceName=" "  EventName="ValueChanged">
            <i:InvokeCommandAction Command="{Binding ReasonTimeChanged}" />
        </i:EventTrigger>
        <prism:InteractionRequestTrigger SourceObject="{Binding SummaryConfirmationInteractionRequest}">
            <prism:PopupChildWindowAction>
                <prism:PopupChildWindowAction.ContentTemplate>
                    <DataTemplate>
                        <StackPanel Width="Auto" ScrollViewer.VerticalScrollBarVisibility="Hidden" Height="Auto"
                                    MaxHeight="400" >
                            <ScrollViewer BorderThickness="1"  VerticalScrollBarVisibility="Auto" Width="820" Height="Auto" MaxHeight="200">
                                <StackPanel Height="Auto" >
                                    <controls:XRadGridView x:Name="UnitsGrid" ItemsSource="{Binding Units, Mode=OneWay}"
                               ScrollViewer.VerticalScrollBarVisibility="Auto"                                                  
                               MaxHeight="300"                              
                               IsReadOnly="True"
                               RowIndicatorVisibility="Collapsed"
                               CanUserInsertRows="False"
                               CanUserDeleteRows="False"
                               ShowColumnHeaders="False"
                               ShowGroupPanel="False"
                               CanUserResizeColumns="False"
                               CanUserReorderColumns="False"
                               AutoGenerateColumns="False">
                                        <controls:XRadGridView.Columns>
                                            <telerik:GridViewDataColumn Header="DUID"
                                            DataMemberBinding="{Binding DisplayDuid}"
                                            IsReadOnly="True"
                                            Width="Auto" />
                                            <telerik:GridViewDataColumn Header="ReasonTime">
                                                <telerik:GridViewDataColumn.CellTemplate>
                                                    <DataTemplate>

                                                        <toolkit:TimePicker  x:Name="ReasonTime"
                                                VerticalAlignment="Center" HorizontalAlignment="Center" Width="20"
                                                MaxWidth="20"
                                                Loaded="ReasonTime_Loaded"
                                                Format="HHmm"

                                                Value="{Binding OfferHeader.ReasonTime, Mode=TwoWay}"                                              
                                                controls:TimePickerExtensions.UpdateBindingOnValueChanged="{Binding ApplyReasonToAll}"
                                                TabIndex="0"/>


                                                    </DataTemplate>
                                                </telerik:GridViewDataColumn.CellTemplate>
                                            </telerik:GridViewDataColumn>
 </controls:XRadGridView.Columns>
                                    </controls:XRadGridView>

код модели представления

Внутри конструктора у меня есть код ниже

 _reasonTimeChangedCommand = new DelegateCommand(OnReasonTimeChanged);

подробности команды

private readonly DelegateCommand _reasonTimeChangedCommand;

public ICommand ReasonTimeChanged => _reasonTimeChangedCommand;

public void OnReasonTimeChanged()
{
}  

1 Ответ

1 голос
/ 29 марта 2020

InvokeCommandAction должно быть внутри во всплывающем окне, чтобы использоваться во всплывающем окне ... , но вы привязываете значение к свойству (ReasonTime), и это свойство должно отвечать за уведомление об изменении. Это работа модели представления, а не просто контейнер для команд или перенаправление свойств из некоторого DTO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...