当我引发datagrid的AddSampleWithType
事件时,我正在使用Caliburn.Micro的消息操作语法在我的视图模型中调用我的AddingNewItem
方法。当用户按下数据网格中的Enter键并且datagrid开始创建新行时,我想使用Samples
类'构造函数在Sample
BindableCollection中创建一个新项,该构造函数需要SampleType
1}}被传入。
这是我的视图的DataGrid XAML:
<DataGrid Name="Samples" SelectedIndex="{Binding SamplesIndex}" Margin="5" Grid.Row="3"
BorderBrush="White" BorderThickness="1" AutoGenerateColumns="False"
cal:Message.Attach="[Event AddingNewItem] = [Action AddSampleWithType($eventArgs)]">
<DataGrid.Columns>
<DataGridTextColumn Header="Sample Names" Binding="{Binding Name}" Width="*" >
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader" BasedOn="{StaticResource MetroDataGridColumnHeader}" >
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
视图模型中的重要代码:
public void AddSampleWithType(EventArgs e)
{
AddingNewItemEventArgs newItemEventArg = (AddingNewItemEventArgs)e;
newItemEventArg.NewItem = new Sample(selectedSampleType, "New Sample", SessionSettings.Instance.UserID);
}
我在AddSampleWithType
方法的第一个语句中放了一个断点,但程序永远不会去那里;永远不会调用该方法。
我的cal是否有问题:我没看到Message.Attach声明?
答案 0 :(得分:0)
您是否尝试将AddingNewItemEventArgs
作为Method的参数?因为方法“签名”必须匹配事件签名...简单地传递EventArgs是不够的.. CM明白,特别是因为你使用$ eventArgs特殊。
当我添加一个事件时,我不知道它的签名,我会使用设计器添加方法“代码隐藏”第一次复制并将我需要的部分粘贴到我的viewmodel方法中。