Есть датагрид со столбцом, состоящим из комбобокса :
<DataGridTemplateColumn Header="Change Status" Width="*" IsReadOnly="False" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding ChangeStatus}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ComboBoxItem Content="Received" IsSelected="True"/>
<ComboBoxItem Content="InWork"/>
<ComboBoxItem Content="Closed"/>
<ComboBoxItem Content="Complited"/>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
При смене значения SelectionChanged в боксе должна сработать команда :
public RelayCommand ChangeStatus
{
get
{
return new RelayCommand(()=>
{
MessageBox.Show//
});
}
}
Не срабатывает. Но если я просто сделаю комбобокс, отдельно от грида то команда выполниться. Подскажите Как исправить ?
Измените Binding в EventTrigger c:
<i:InvokeCommandAction Command="{Binding ChangeStatus}"/>
на:
<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.ChangeStatus}" />
и будет вам счастье )
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости