что я получаю сообщение об ошибке каждая запись должна иметь связанный ключ? (WPF) - PullRequest
0 голосов
/ 26 мая 2020

Я прочитал много вопросов по этому поводу, но все эти вопросы касались моделей виртуальных машин, а у меня нет модели виртуальной машины, я пытаюсь изменить язык своего приложения с помощью ResourceDictionary, как описано в этом сообщении. .

Как изменить язык в WPF / XAML

, а также я видел много примеров без указания ключа https://docs.microsoft.com/es-es/dotnet/framework/wpf/advanced/how-to-use-a-resourcedictionary-to-manage-localizable-string-resources

и я не понимаю, что делаю неправильно, это ресурс xaml

<Window.Resources>
        <Style x:Key="titulo" TargetType="TextBlock" BasedOn="{StaticResource Encabezado}">
            <Setter Property="Margin" Value="20"/>
            <Setter Property="Foreground" Value="White"/>
        </Style>

        <Style x:Key="tipoBase" TargetType="TextBlock">
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Margin" Value="10"/>
        </Style>

        <Style x:Key="imagenTitulo" TargetType="Image">
            <Setter Property="Height" Value="200"/>
            <Setter Property="Source" Value="/images/asistente.jpg" />
        </Style>

        <Style x:Key="narracion" TargetType="TextBlock" BasedOn="{StaticResource tipoBase}">
            <Setter Property="TextWrapping" Value="Wrap"/>
            <Setter Property="FontSize" Value="18"/>
            <Setter Property="TextAlignment" Value="Center"/>
        </Style>

        <Style x:Key="botonSalirInicio" TargetType="Button" BasedOn="{StaticResource botonSalir}">
            <Setter Property="Height" Value="50"/>
            <Setter Property="Width" Value="50"/>
            <Setter Property="Margin" Value="0 0 10 0"/>
        </Style>

        <ResourceDictionary>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Idiomas/IdiomasLogin.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </ResourceDictionary>

    </Window.Resources>

Файл ресурсов

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:ElEscribaDelDJ"
                    xmlns:system="clr-namespace:System;assembly=System.Runtime">


    <system:String x:Key="Titulo">Bienvenido a "el escriba del DJ"</system:String>
    <system:String x:Key="Narración">a</system:String>
    <system:String x:Key="User">Usuario:</system:String>
    <system:String x:Key="UserText">Introduzca el nombre de usuario:</system:String>
    <system:String x:Key="CheckUser">Recordar Usuario:</system:String>
    <system:String x:Key="CheckLogin">Recordar Login:</system:String>
    <system:String x:Key="License">Este producto esta bajo la licencia</system:String>
    <system:String x:Key="Credits">Creditos</system:String>
</ResourceDictionary>

Другая странность в том, что я не могу использовать clr- пространство имен: System; assembly = mscorlib, когда я пытаюсь его использовать, всегда получаю сообщение об ошибке

Свойства настраиваемого инструмента для встроенного ресурса ResourceDictionary: XamlIntelliSenseFileGenerator

и, наконец, текстовый блок

<TextBlock Style="{DynamicResource titulo}" x:Name="titulo" Text="{DynamicResource Titulo}"/>

1 Ответ

1 голос
/ 26 мая 2020

вы должны поместить все стили в один ResourceDictionary. на данный момент у вас слишком много объявлений <ResourceDictionary>, и самое внешнее рассматривается как ресурс, но не имеет x:Key, поэтому ошибка.

перепишите его следующим образом (<ResourceDictionary.MergedDictionaries> может быть написано первым)

<Window.Resources>
    <ResourceDictionary>
        <!--<ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Idiomas/IdiomasLogin.xaml"/>
        </ResourceDictionary.MergedDictionaries>-->

        <Style x:Key="titulo" TargetType="TextBlock" BasedOn="{StaticResource Encabezado}">
            <Setter Property="Margin" Value="20"/>
            <Setter Property="Foreground" Value="White"/>
        </Style>

        <Style x:Key="tipoBase" TargetType="TextBlock">
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Margin" Value="10"/>
        </Style>

        <Style x:Key="imagenTitulo" TargetType="Image">
            <Setter Property="Height" Value="200"/>
            <Setter Property="Source" Value="/images/asistente.jpg" />
        </Style>

        <Style x:Key="narracion" TargetType="TextBlock" BasedOn="{StaticResource tipoBase}">
            <Setter Property="TextWrapping" Value="Wrap"/>
            <Setter Property="FontSize" Value="18"/>
            <Setter Property="TextAlignment" Value="Center"/>
        </Style>

        <Style x:Key="botonSalirInicio" TargetType="Button" BasedOn="{StaticResource botonSalir}">
            <Setter Property="Height" Value="50"/>
            <Setter Property="Width" Value="50"/>
            <Setter Property="Margin" Value="0 0 10 0"/>
        </Style>

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Idiomas/IdiomasLogin.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...