0

我不太确定如何在 WPF 中使用Caliburn.MicroAutoGeneratingColumn Actions 来连接事件。我尝试以与您无济于事的方式相同的方式进行操作(它不调用)。任何指导将不胜感激。[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;
    }

在相关说明中,使用Action ParametersMessage.Attach方法之间是否存在任何明显差异:

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

对比

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

2 回答 2

2

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

为了解决这个问题,您可以在视图的代码隐藏文件中处理事件。

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

后一种技术,即 Message.Attach 技术是为那些手工密集使用 XAML 的人发明的,因此他们不会输入很多内容。

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

无论如何,Caliburn.Micro 会自动将 Message.Attach 技术转换为等效的动作参数技术。

于 2013-10-18T10:40:51.067 回答
0

您已附加如下方法

在视图中:

AutoGenerateColumns="True"
cal:Message.Attach="[EventAutoGeneratingColumn] = [Action ModifyDataGridColumn($this, $eventargs)];"

在视图模型中:

公共无效 ModifyDataGridColumn(对象发送者,DataGridAutoGeneratingColumnEventArgs e){

}

这仅在 AutoGenerate Columns 为 true 时有效。

于 2019-07-19T14:38:15.667 回答