我不确定如何使用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(...)]" />
答案 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时有效。