XAML DataTemplate无法访问应用程序资源

间歇泉

烦人的XAML问题:我在资源字典文件中定义了一个DataTemplate,该文件必须访问在App.Resources中定义为资源的转换器。从逻辑上讲,我应该将DataTemplate字典与App.Resources字典合并,应该这样。但是我有一个例外,说找不到我的转换器资源。我想念什么吗?参考?定义顺序?

更新:这是我的App.Resources

<ResourceDictionary>
    <!--Global Resources-->
    <BooleanToVisibilityConverter x:Key="BoolToVis"/>
    <!--System Resources-->
    <sys:Boolean x:Key="True">True</sys:Boolean>
    <sys:Boolean x:Key="False">False</sys:Boolean>
    <!--Framework Resources-->
    <fr:EnumToBoolConverter x:Key="EnumToBool"/>
    <fr:EnumAttributeConverter x:Key="EnumToAttr"/>
    <fr:FileInfoConverter x:Key="ToFileInfo"/>
    <fr:ImageInfoConverter x:Key="ToImageInfo"/>
    <fr:UnitConverter x:Key="ToUnit"/>
    <fr:CommandParameterConverter x:Key="ToCmdParam"/>
    <!--Style Resources-->
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="pack://application:,,,/FrameworkUI;component/Styles/Dark3DStyles.xaml"/>
        <ResourceDictionary Source="/Resources/DataTemplates.xaml/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

...这是在资源字典文件中定义的DataTemplate

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataTemplate x:Key="NoteEnumTemplate">
    <Grid Height="22">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="22"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Image Grid.Column="0" Stretch="None"
               Source="{Binding Converter={StaticResource EnumToAttr},
                                ConverterParameter=ICON}">
            <Image.Effect>
                <DropShadowEffect ShadowDepth="0"/>
            </Image.Effect>
        </Image>
        <Label Grid.Column="1"
               Content="{Binding Converter={StaticResource EnumToAttr},
                                 ConverterParameter=DESCR}"/>
    </Grid>
</DataTemplate>

找不到的转换器是EnumToAttr

凯洛·伦

您的问题是定义资源/数据模板的顺序以及合并字典的顺序。

您正在将ResourceDictionary合并到App.Resources。因此ResourceDictionary是最重要的,并且必须具有每个要运行的资源(键)。它不能使用在派生的ResourceDictionary中定义的键。

将转换器移到ResourceDictionary中,然后查看结果。

您已在最后编写了合并字典代码,但不会这样做。如果您看到编译后将生成的代码,则资源必须在上述顺序中。

您的设计前景解决方案:

<ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="RD2.xaml"  />//Converter code
            <ResourceDictionary Source="RD.xaml"  /> //Template code            
</ResourceDictionary.MergedDictionaries>

上面的代码将起作用,因为始终会在模板代码之前生成转换器代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Xamarin Froms XAML 从应用程序资源获取颜色

来自分类Dev

如何将应用程序资源添加到应用程序的C#后端而不是XAML文件中?

来自分类Dev

如何在Generic.xaml中获取应用程序资源

来自分类Dev

如何在Generic.xaml中获取应用程序资源

来自分类Dev

XAML outsourcing datatemplate with events in APP.xaml

来自分类Dev

在XAML中定义DataTemplate?

来自分类Dev

XAML:重构DataTemplate

来自分类Dev

Servlet筛选器无法访问基于JSF的应用程序中的CSS,资源和质数

来自分类Dev

WPF重用XAML资源

来自分类Dev

WPF重用XAML资源

来自分类Dev

Windows 8从App.xaml.cs访问应用程序的页面方法

来自分类Dev

Windows 8从App.xaml.cs访问应用程序的页面方法

来自分类Dev

从mainviewmodel访问xaml控件

来自分类Dev

从代码正确访问XAML

来自分类Dev

无法在app.xaml中部署具有样式的应用程序

来自分类Dev

无法解析XAML / XML

来自分类Dev

无法绑定XAML uwp

来自分类Dev

如何将仅XAML资源放置在WPF应用程序要使用的DLL(参考)文件中?

来自分类Dev

如何将仅XAML资源放置在WPF应用程序要使用的DLL(参考)文件中?

来自分类Dev

ExifLib是否可以在WPF / XAML应用程序中使用?

来自分类Dev

MVVM XAML应用程序中的异步等待

来自分类Dev

垂直滚动gridview XAML Windows商店应用程序

来自分类Dev

如何使用多个XAML文件创建WPF应用程序?

来自分类Dev

C#XAML图像未在应用程序中显示

来自分类Dev

WinRT XAML应用程序中的Launcher.LaunchUriAsync

来自分类Dev

如何使用多个XAML文件创建WPF应用程序?

来自分类Dev

在Windows Phone Native / XAML应用程序中获取方向

来自分类Dev

使用C#+ XAML的示例应用程序

来自分类Dev

C#XAML存储应用程序中的.resjson

Related 相关文章

热门标签

归档