powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Обращение к *.resw
5 сообщений из 5, страница 1 из 1
Обращение к *.resw
    #39280618
Midgard90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрых суток!
Возникла проблемка, гугл инфы не дал, помогите)
Есть файл ресурсов resources.resw в универсальном проекте. В нём тупо переменная StringLabel1 со значением "траливали".
В проекте 2 формы (xaml): главная и с настройками.
В главной по кнопке происходит следующий код (в textblock закидываю значение строки этого параметра):
Код: c#
1.
2.
3.
4.
5.
6.
    
var resourceLoader = ResourceLoader.GetForCurrentView();
this.textBlock1.Text = resourceLoader.GetString("StringLabel1");
//оба варианта работают одинаково хорошо
var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
textBlock1.Text = loader.GetString("StringLabel1");


Оба варианта работают на отлично.
Вопрос: на форме настроек есть textbox и кнопка, которая должна поменять в файле ресурсов то самое значение в StringLabel1 на то, которое в textbox-е. Но как я не могу допереть...
Код: c#
1.
2.
3.
4.
5.
    
//var resourceLoader = ResourceLoader.GetForCurrentView();
//resourceLoader("StringLabel1") = "";
var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
//var t = ResourceLoader.GetForViewIndependentUse("Resources");


Пробовал по всякому, но не могу достучаться вообще до этого файла и его переменных. Как быть в этом случае?
Заранее благодарю за помощь!
...
Рейтинг: 0 / 0
Обращение к *.resw
    #39280850
Midgard90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или тогда поставлю вопрос по другому: как организовать динамические настройки приложения?
Например такие как: размер шрифта некоторых элементов, или цвет окна. Но эти настройки пользователь должен мочь изменять и они должны сохраняться и применяться, даже после выхода из приложения и очередного входа.
...
Рейтинг: 0 / 0
Обращение к *.resw
    #39282045
Midgard90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добился всё таки самостоятельно, может кому пригодится:
в App.xaml.cs:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    
sealed partial class App : Application
        {
        Windows.Storage.ApplicationDataContainer localSettings =
            Windows.Storage.ApplicationData.Current.LocalSettings;
        Windows.Storage.StorageFolder localFolder =
            Windows.Storage.ApplicationData.Current.LocalFolder;
        ......
        }


На главной форме(чтоб дать какие-то начальные значения):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        
public MainPage()
        {
        this.InitializeComponent();
        var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
        try
            {
            Object ZoomLevel1 = localSettings.Values["ZoomLevel1"];
            Application.Current.Resources["ZoomLevelMap"] = localSettings.Values["ZoomLevel1"];
            }
       catch
           {
           localSettings.Values["ZoomLevel1"] = 12;
           Application.Current.Resources["ZoomLevelMap"] = localSettings.Values["ZoomLevel1"];
           }
      }



На форме "настроек", в пример слайдера. Сперва выставляем слайдер в то значение которое имеем:
Код: c#
1.
2.
3.
4.
5.
6.
7.
        
public SetingPage()
        {
        this.InitializeComponent();
        var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
        this.Dist.Value = Convert.ToDouble(localSettings.Values["ZoomLevel1"]);
        }


И на событие например кнопки "сохранить" сохраняем новое значение:
Код: c#
1.
2.
3.
4.
5.
6.
7.
        
private void button_Click(object sender, RoutedEventArgs e)
        {
        var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
        localSettings.Values["ZoomLevel1"] = this.Dist.Value;
        Application.Current.Resources["ZoomLevelMap"] = localSettings.Values["ZoomLevel1"];
        }


Последняя строка здесь есть привязка к xaml биндингом, в App.xaml объявляем ресурс (или в свойствах объекта к которому применяем данную настройку):
Код: xml
1.
2.
3.
 <Application.Resources>
    <x:Double x:Key="ZoomLevelMap">2</x:Double>
 </Application.Resources>


Я сделал для всего проекта, можно локально для каждого. И непосредственно привязка к объекту:
Код: xml
1.
2.
3.
4.
        
<Maps:MapControl x:Name="Map1" 
                 ZoomLevel="{StaticResource ZoomLevelMap}" 
                 />


Проверено как на десктопе, так и на телефоне. Код конечно надо привести в порядок.
Но столкнулся со следующим камнем - свойство элемента MapControl.Style таким способом не привяжешь. Ресурсы могут быть int string double bool и т д, но нет MapStyle.Style... Как тут выкрутиться? Программа должна помнить какой вид карты использовался.
...
Рейтинг: 0 / 0
Обращение к *.resw
    #39282245
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Markup Extension тут подойдет по моему.
...
Рейтинг: 0 / 0
Обращение к *.resw
    #39282478
Midgard90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выполнил костылём)
первое что пришло в голову. прям на форме с картой, при инициализации:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
this.InitializeComponent();
            var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

            try
            {
                Object Style1 = localSettings.Values["Style1"];
                switch (Style1.ToString())
                {
                    case "Road":
                        this.PrimechMap.Style = MapStyle.Road;
                        break;
                    case "Aerial":
                        this.PrimechMap.Style = MapStyle.Aerial;
                        break;
                    case "AerialWithRoads":
                        this.PrimechMap.Style = MapStyle.AerialWithRoads;
                        break;
                }
            }
            catch
            {
                this.PrimechMap.Style = MapStyle.Road;
            }
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Обращение к *.resw
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]