我在 Silverlight 中有一个数据网格,其中有一个包含按钮的模板列。在 XAML 中基本上看起来像这样 -
<sdk:DataGrid ItemsSource="{Binding Items}" SelectedItem="{Binding Selected, Mode=TwoWay}">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button HorizontalAlignment="Right" Click="btn_Click">
<StackPanel Orientation="Horizontal">
<Image Source="/image.png"/>
</StackPanel>
</Button>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<!-- Ten Other Columns -->
</sdk:DataGrid.Columns>
</sdk:DataGrid>
现在,在这个设置中,只要单击该按钮,btn_Click 事件就会很好地触发(无论是否选择了该行。一切都很好,直到我向数据网格添加了一个 selectionchanged 事件。XAML 的第一行现在是 -
<sdk:DataGrid ItemsSource="{Binding Items}" SelectedItem="{Binding Selected, Mode=TwoWay}" SelectionChanged="dg_SelectionChanged">
现在 btn_Click 事件只会在被点击的按钮位于当前选定的行时触发。否则它只会触发 selectionchanged 事件,并且永远不会点击按钮。我理解 selectionchanged 事件触发,因为您显然正在切换选定的行。但我不明白为什么 btn_Click 永远不会被击中。任何人都知道为什么会这样以及如何解决它?
提前致谢。