Сетка данных Wpf Свойство CurrentCell срабатывает только один раз MVVM - PullRequest
0 голосов
/ 28 января 2019

У меня есть сетка данных, которая выглядит следующим образом:

<DataGrid x:Name="Applications" CanUserResizeColumns="False" CanUserResizeRows="False"  
 AutoGenerateColumns="false" CanUserAddRows="false" ItemsSource="{Binding Applications}" 
 SelectionMode="Single"
 CurrentCell="{Binding CellInfo, Mode=TwoWay}">

И у меня есть вопрос о CurrentCell, он привязан к poeprty в представлении модели, которая выглядит следующим образом:

    private DataGridCellInfo cellInfo;
    public DataGridCellInfo CellInfo
    {
        get => cellInfo;
        set
        {
            cellInfo = value;
            OnPropertyChanged();

            if (cellInfo.Column.DisplayIndex == 1)
            {
                var selectedApplication = (ExtendedApplicationFile)cellInfo.Item;
                ExpandAppDetailsCommand.Execute(selectedApplication);
            }
        }
    }

Ичто он делает, он устанавливает правильный элемент и отправляет его команде, которая будет тратить и скрывать окно сведений о строке.

Проблема в том, что, если я щелкну один раз, свойство будет установлено, и оно развернется, но когда я нажму второй раз на той же ячейке, свойство не будет установлено, и строка сведений не будет свернута.Он снова заработает, когда я нажму на другую ячейку и вернусь к ней, но я не к этому стремлюсь.

1 Ответ

0 голосов
/ 29 января 2019

Основываясь на информации в комментарии, я пришел к простому решению, я добавил шаблон ячейки с триггером события:

<DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
             <Label Content="{Binding Name}" Width="350">
                   <i:Interaction.Triggers>
                         <i:EventTrigger EventName="MouseDown">
                                  <i:InvokeCommandAction Command="{Binding DataContext.ExpandAppDetailsCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}" CommandParameter="{Binding}"/>
                          </i:EventTrigger>
                    </i:Interaction.Triggers>
                 </Label>
           </DataTemplate>                
</DataGridTemplateColumn.CellTemplate>

Используя тонкий каждый раз, когда я щелкаю по ячейке, запускается событие и переключается представление подробностей.

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