我正在尝试将一些颜色放入糟糕的ListView中,我发现resource(特别是方法1)告诉我使用以下方法定义ResourceKey:
<namespc:BackgroundConverter x:Key="myConverter"/>
尽管说资源没有提及它,但我认为namespc
是一个占位符,并且这部分代码必须放在<UserControl.Resources>
块中。
问题是我不知道如何使ResourceKey固定住。如果我离开namespc
,它告诉我命名空间不存在。我已经看到使用local
或super
的答案,它们也会产生错误。我已经尝试过放置我的名称空间RechercheArchive
(这是BackgroundConverter类所在的位置),并且显然如果它可以工作,我就不会在这里。
因此,我的XAML当前如下所示:
<UserControl x:Class="RechercheArchive.SearchTab"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="900">
<UserControl.Resources>
<namespc:BackgroundConverter x:Key="myConverter"/>
<Style x:Key="myItemStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="Background">
<Setter.Value>
<Binding RelativeSource="{RelativeSource Self}"
Converter="{StaticResource myConverter}"/>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid>
<!-- Bunch of stuff -->
<Grid/>
</UserControl>
我在这里想念什么?
PS:如果您对此有更好的标题,请随时提出建议。
编辑:为了后代,这是解决我问题的方法。
因此,通过添加解决了名称空间问题
xmlns:namespc="clr-namespace:RechercheArchive"
就这样
<UserControl x:Class="RechercheArchive.SearchTab"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:namespc="clr-namespace:RechercheArchive"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="900">
但是等等,还有更多。该资源未在转换器上实现ConvertBack
方法,并且Visual Studio无法引发错误。因此,请确保您正确实施IValueConverter
。