Caliburn.Micro中的DataGrid AutoGeneratingColumn操作

时间:2013-10-17 17:09:37

标签: c# wpf mvvm datagrid caliburn.micro

我不确定如何使用WPF中的 Caliburn.Micro 操作来连接AutoGeneratingColumn事件。我试着这样做[Event Click] = ...无效(它不会调用IDRemover)。任何指导都将非常感谢。

查看

<DataGrid x:Name="MyObservableCollection" AutoGenerateColumns="True" cal:Message.Attach="[Event AutoGeneratingColumn] = [Action IDRemover($eventArgs)]"></DataGrid>

视图模型

public void IDRemover(System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)
    {
        if (e.PropertyName == "ID")
            e.Cancel = true;
    }

相关说明,使用操作参数 Message.Attach 方法之间是否存在明显差异:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
        <cal:ActionMessage MethodName="DoStuff">
            <cal:Parameter Value="{Binding ...}" />
        </cal:ActionMessage>
    </i:EventTrigger>
</i:Interaction.Triggers>

VS

<Button cal:Message.Attach="[Event Click] = [Action DoStuff(...)]" />

2 个答案:

答案 0 :(得分:2)

这不起作用,因为Caliburn.Micro利用System.Windows.Interactivity作为它的触发机制,并且该技术不适用于AutoGeneratingColumn事件,因为它不是RoutedEvent或RoutedUIEvent,它是正常的.NET事件。

要解决此问题,您可以在视图的代码隐藏文件中处理该事件。

  

相关说明,使用Action Parameters与Message.Attach方法之间是否存在明显差异?

后一种技术,即Message.Attach技术是为那些手工使用XAML密集工作的人发明的,所以他们不会打字很多。

第一种技术,你称之为动作参数的技术可以由像Microsoft Expression Blend这样的设计师通过拖放自动生成,所以如果你是一名设计师,你会喜欢这个。

无论如何,Message.Attach技术由Caliburn.Micro自动转换为等效的Action Parameters技术。

答案 1 :(得分:0)

您已附加了以下方法

在视图中:

  

AutoGenerateColumns =“ True”
  cal:Message.Attach =“ [EventAutoGeneratingColumn] = [动作   ModifyDataGridColumn($ this,$ eventargs)];“

在Viewmodel中:

  

public void ModifyDataGridColumnColumn(对象发送者,   DataGridAutoGeneratingColumnEventArgs e){

     

}

这仅在“自动生成列”为true时有效。