【发布时间】:2022-01-16 21:34:39
【问题描述】:
我已更新 PRISM,现在我的 XAML 文件返回错误。
我已经对如何修复它进行了一些研究,似乎更改 xmlns:i 标记就可以了。
原来是这样的:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
我把它改成了:
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
现在的问题是我在 Class 标签上遇到错误:
<Window x:Class="X.StatusHostWindow">
我得到的错误是:
无法将指定的值分配给集合。应为以下类型:“行为”。
我的类后面的代码继承了类Window,所以如果我想继承类Behavior,它抱怨我不能有多重继承。
知道如何解决这个问题吗?
XAML 代码:
<Window x:Class="X.StatusHostWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:TemplateSelectors="clr-namespace:X.TemplateSelectors"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:local="clr-namespace:X.Client.Controls"
xmlns:Shared="clr-namespace:X.Common.Shared;assembly=X"
xmlns:converters="clr-namespace:X.Client.Controls.Convertors"
xmlns:Behaviors="clr-namespace:X.Client.Controls.Behaviors" ShowActivated="False"
AllowsTransparency="True"
WindowStyle="None"
ShowInTaskbar="False"
Background="Transparent"
Topmost="True"
UseLayoutRounding="True"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
>
<Window x:Class="X.Client.Controls.StatusHostWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:TemplateSelectors="clr-namespace:X.Client.Controls.TemplateSelectors"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:local="clr-namespace:X.Client.Controls"
xmlns:Shared="clr-namespace:X.Common.Shared;assembly=X.Common.Infrastructure"
xmlns:converters="clr-namespace:X.Client.Controls.Convertors"
xmlns:Behaviors="clr-namespace:X.Client.Controls.Behaviors" ShowActivated="False"
AllowsTransparency="True"
WindowStyle="None"
ShowInTaskbar="False"
Background="Transparent"
Topmost="True"
UseLayoutRounding="True"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
>
<Window.Resources>
<converters:SeverityToBrushConverter x:Key="severityToBrushConverter"/>
<local:TriggersCollection x:Key="removeTriggers" x:Shared="false">
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding RemoveStatusCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
CommandParameter="{Binding}"
/>
</i:EventTrigger>
</local:TriggersCollection>
<i:EventTrigger> 标签出现错误:
命名空间
http://schemas.microsoft.com/expression/2010/interactivity中不存在名称eventTrigger。
这就是为什么我将其更新为:
xmlns:i="http://schemas.microsoft.com/xaml/behaviors
【问题讨论】:
-
能否请您显示代码,错误发生在哪里?你能澄清一下继承的问题是什么吗?你有一个窗口,但你从
Behavior派生?这似乎不对。 -
@thatguy 我已经更新了原帖