0

Занимаюсь локализацией проекта основу взял здесь. Тестовый проект сработал полностью вопросов нет, но при переносе в свой проект в дизайнере отсутствуют какие либо ссылки на элементы файлов ресурсов, к примеру при привязке Content:

введите сюда описание изображения

это отображение в дизайнере форм,

введите сюда описание изображения

так отображается в запущенном приложении.
Подскажите пожалуйста в чем может быть причина Разметка введите сюда описание изображения Код бехайнд неиспользуется

Тестовый проект окно выглядит следующим образом: введите сюда описание изображения Разметка `

<Window x:Class="WpfLocalization.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfLocalization"
        xmlns:globalization="clr-namespace:System.Globalization;assembly=mscorlib"
        xmlns:l="clr-namespace:WpfLocalization.Localization"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d" 
        d:DataContext="{d:DesignInstance Type={x:Type local:MainViewModel}}"
        Title="{l:Localization WindowTitle}"
        MinWidth="300" MinHeight="200"
        SizeToContent="WidthAndHeight"
        WindowStartupLocation="CenterScreen">
    <Window.Resources>
        <x:Array x:Key="AbcStrings" Type="system:String">
            <system:String>A</system:String>
            <system:String>B</system:String>
            <system:String>C</system:String>
        </x:Array>
    &lt;Style x:Key=&quot;ExStyle&quot; TargetType=&quot;{x:Type TextBlock}&quot;&gt;
        &lt;Setter Property=&quot;Text&quot; Value=&quot;{l:Localization World}&quot; /&gt;
    &lt;/Style&gt;
&lt;/Window.Resources&gt;
&lt;Grid Margin=&quot;5&quot;&gt;
    &lt;Grid.RowDefinitions&gt;
        &lt;RowDefinition Height=&quot;Auto&quot; /&gt;
        &lt;RowDefinition Height=&quot;Auto&quot; /&gt;
        &lt;RowDefinition /&gt;
    &lt;/Grid.RowDefinitions&gt;
    &lt;Grid.ColumnDefinitions&gt;
        &lt;ColumnDefinition Width=&quot;Auto&quot; /&gt;
        &lt;ColumnDefinition /&gt;
    &lt;/Grid.ColumnDefinitions&gt;

    &lt;TextBlock Grid.Row=&quot;0&quot; Grid.Column=&quot;0&quot; Text=&quot;{l:Localization 'Localization'}&quot; /&gt;

    &lt;ListBox Grid.Row=&quot;0&quot; Grid.Column=&quot;1&quot;
              HorizontalAlignment=&quot;Right&quot;
              SelectedIndex=&quot;0&quot;
              ItemsSource=&quot;{Binding CultureInfos}&quot;
              SelectedItem=&quot;{Binding CurrentCulture, UpdateSourceTrigger=PropertyChanged}&quot;&gt;
        &lt;ListBox.ItemTemplate&gt;
            &lt;DataTemplate DataType=&quot;{x:Type globalization:CultureInfo}&quot;&gt;
                &lt;TextBlock Text=&quot;{l:Localization KeyBinding={Binding ThreeLetterISOLanguageName}}&quot; /&gt;
            &lt;/DataTemplate&gt;
        &lt;/ListBox.ItemTemplate&gt;
    &lt;/ListBox&gt;
`

Но при переносе решения проект отображение имен свойств пропадает (не удобно для отладки) Евгений посоветовал инициализировать FallBackValue в точке останова на рисунке оно установленно. Как заставить его отображаться. введите сюда описание изображения

  • 1
    Покажите разметку и код. – aepot Nov 25 '20 at 12:17
  • 1
    А что вы ожидаете, чтоб дизайнер сам угадал что за тип у вас там, какое значение и так далее? Тогда бы некоторые проекты очень сильно грузили бы студию, получая постоянно нужные данные. По этой причине (и некоторым другим), студия абстрагируется от реальных данных, делая лишь наброски с именами переменных либо простой пустоты. – EvgeniyZ Nov 25 '20 at 15:02
  • 1
    Вы можете сами заполнить дизайнер фейковыми данными, для этого каждый привязанный класс должен иметь пустой конструктор с данными по умолчанию для каждого свойства, а в XAML установить d:DataContext="{d:DesignInstance тип, IsDesignTimeCreatable=True}", тогда вы будете видеть все эти данные по умолчанию. Либо вы можете сделать файл ресурсов, который также будет принят как источник данных для дизайнера. – EvgeniyZ Nov 25 '20 at 15:02
  • Разметку или код принято вставлять текстом в пост. Скриншоты кода - не формат для StackOverflow. Но вашем случае это не так критично, я поддерживаю оба комментария, что выше даны, это по сути и есть ответ. – aepot Nov 25 '20 at 21:21
  • @EvgeniyZ "А что вы ожидаете, чтоб дизайнер сам угадал что за тип у вас там, какое значение и так далее? Тогда бы некоторые проекты очень сильно грузили бы студию, получая постоянно нужные данные. По этой причине (и некоторым другим), студия абстрагируется от реальных данных, делая лишь наброски с именами переменных либо простой пустоты. " Мне и нужны наброски с именами свойств в место пустоты в дизайнере, а то колеги подумают что ничего нет. – Optimator Optimatorin Nov 26 '20 at 08:34
  • Напишите значение по умолчанию для этого "кружка" (что-то вроде {Binding Lang, FallbackValue=LNG}, можете еще TargetNullValue указать), тогда у вас будет выводить это значение (в моем примере LNG) в дизайнере. Я думаю, это самый оптимальный и менее затратный вариант для вас. – EvgeniyZ Nov 26 '20 at 13:08
  • @EvgeniyZ Во первых, спасибо БОЛЬШОЕ за то, что возитесь со мной. На скрине (последнем в точке останова) видно что значение для FallBackValue установленно, вот его то я и хочу увидеть, но не получается – Optimator Optimatorin Nov 26 '20 at 23:13

1 Answers1

1

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