在XAML WPF中创建ResourceKey以及如何查找我的名称空间

时间:2018-08-10 07:12:46

标签: c# wpf xaml

我正在尝试将一些颜色放入糟糕的ListView中,我发现resource(特别是方法1)告诉我使用以下方法定义ResourceKey:

<namespc:BackgroundConverter x:Key="myConverter"/>

尽管说资源没有提及它,但我认为namespc是一个占位符,并且这部分代码必须放在<UserControl.Resources>块中。

问题是我不知道如何使ResourceKey固定住。如果我离开namespc,它告诉我命名空间不存在。我已经看到使用localsuper的答案,它们也会产生错误。我已经尝试过放置我的名称空间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

0 个答案:

没有答案