我无法使用来自 caliburn micro 的 ActionMessage,如何解决?
I can't use ActionMessage from caliburn micro, how do I resolve it?
根据我在 Caliburn Micro 的描述中看到的内容,这段代码应该可以正常编译。 Caliburn Description
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="AbrirPDF">
<cal:Parameter Value="{Binding CNPJ}"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
尝试此操作时,出现以下错误:
ArgumentException: Cannot add instance of type 'ActionMessage' to a collection of type 'TriggerActionCollection'. Only items of type 'T' are allowed.
有人可以帮我解决这个问题吗?
您的命名空间映射可能有误。这应该编译:
<UserControl x:Class="CaliburnMicroSample.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cal="http://www.caliburnproject.org">
<StackPanel>
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="AbrirPDF">
<cal:Parameter Value="{Binding CNPJ}"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
</UserControl>
唯一安装的 NuGet 包是 Caliburn.Micro 3.2.0。
我遇到了类似的问题,我不得不在调用 ActionMessage
之前添加一个额外的 xaml 标记,我的相应示例才能使其正常工作:
<StackPanel>
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:Action.Target>
<cal:ActionMessage MethodName="AbrirPDF">
<cal:Parameter Value="{Binding CNPJ}"/>
</cal:ActionMessage>
</cal:Action.Target>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
然后我就可以访问指定的标签了。
对于 Caliburn.Micro v4,我发现将名称空间更改为以下内容可以解决我的问题,而且我不必添加额外的 <cal:Action.Target>
标签
xmlns:cal="http://caliburnmicro.com"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
之前我一直在使用以下命名空间
xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro.Platform"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
根据我在 Caliburn Micro 的描述中看到的内容,这段代码应该可以正常编译。 Caliburn Description
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="AbrirPDF">
<cal:Parameter Value="{Binding CNPJ}"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
尝试此操作时,出现以下错误:
ArgumentException: Cannot add instance of type 'ActionMessage' to a collection of type 'TriggerActionCollection'. Only items of type 'T' are allowed.
有人可以帮我解决这个问题吗?
您的命名空间映射可能有误。这应该编译:
<UserControl x:Class="CaliburnMicroSample.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cal="http://www.caliburnproject.org">
<StackPanel>
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="AbrirPDF">
<cal:Parameter Value="{Binding CNPJ}"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
</UserControl>
唯一安装的 NuGet 包是 Caliburn.Micro 3.2.0。
我遇到了类似的问题,我不得不在调用 ActionMessage
之前添加一个额外的 xaml 标记,我的相应示例才能使其正常工作:
<StackPanel>
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:Action.Target>
<cal:ActionMessage MethodName="AbrirPDF">
<cal:Parameter Value="{Binding CNPJ}"/>
</cal:ActionMessage>
</cal:Action.Target>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
然后我就可以访问指定的标签了。
对于 Caliburn.Micro v4,我发现将名称空间更改为以下内容可以解决我的问题,而且我不必添加额外的 <cal:Action.Target>
标签
xmlns:cal="http://caliburnmicro.com"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
之前我一直在使用以下命名空间
xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro.Platform"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"