Как получить доступ к MyProject.mysettings.default.somesetting от XAML?
-
30-09-2019 - |
Вопрос
Я определил StringCollection в настройках проекта. Я хочу использовать значения в Combobox.
Есть ли способ получить доступ к нему Xamly?
Я старался:
<CollectionViewSource Source="{x:Static src:MySettings.Default.MyCollection}" />
<CollectionViewSource
Source="{Binding Source={x:Static src:MySettings.Default.MyCollection}}" />
**** SRC ** - XMLNS проекта *
Он говорит: «Тип SRC: MySettings.default не найден».
Дело в том, что MySettings - это класс, который предлагает свойство по умолчанию, которое является безопасным к потоковым экземпляром MySettings, я действительно хочу получить коллекцию из недвижимости по умолчанию, а не путем создания нового включения.
Есть ли другие способы, которыми я не знаю, возможно, ObjectDataProvider может получить доступ к статическим объектам?
Я думал, что, возможно, я могу сделать в приложении .xaml глобальный ресурс, который возвращает MySettings.default, который является экземпляром класса MySettings, а затем получить доступ к всем его свойствам, я попробую это, но я предпочитаю просто простой способ.
Решение
Я всегда сделал это, используя X: расширение статического разметки. Отказ Ключ должен установить источник в Settings.Default
и путь к желаемой настройке, как так:
<Window x:Class="SettingsBindSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:SettingsBindSample.Properties"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<CollectionViewSource x:Key="MyItems"
Source="{Binding MyCollection, Source={x:Static s:MySettings.Default}}" />
</Window.Resources>
<StackPanel>
<ComboBox ItemsSource="{Binding Source={StaticResource MyItems}}" />
</StackPanel>
</Window>
Другие советы
Я нашел это. Проверять, надеюсь, я не трачу свое время ...
http://code.msdn.microsoft.com/staticexextension.
Если у вас есть лучшие идеи, пожалуйста, знаете лемме.
Как удлинение ответа Джозефа, также возможно получить доступ к индивидуальным настройкам напрямую с {x:Static }
используя статический класс обертки. Это позволяет использовать значения настроек, где привязка не будет работать - в основном в значительной степени анимации или свойства, которые не являются свойствами зависимостей.
Основной подход:
public static class XamlSettings
{
public static MySettingsMember { get {return Properties.MySettings.Default.MySettingsMember; }}
}
который вы тогда обратитесь к XAML под пространством имен, класс обертки находится вдоль линий <DoubleAnimation From="{x:Static local:XamlSettings.MySettingsMember}" ... />
.
В качестве добавления к этому, пытаясь выставить по умолчанию, непосредственно не работает, предположительно, потому что это не совсем статично «достаточно» - свойства по умолчанию являются свойствами экземпляра, которые {x:Static}
не нравится Возможно, вы можете написать пользовательское расширение разметки, которое получило бы свойства экземпляра, хотя.
Это особенно полезно для подхода, основанного на ресурсе к анимации, где вы не хотите строго говорить, хотите связать (что приносит все виды свободных проблем в игру), но и не хочется иметь много синглтон <sys:double x:Key="MyNumber">50.0</sys:double>
s пинание (или хочу избежать накладных расходов объединенного словаря ресурсов на уровне приложения, который я привел к веществу, не просто создается раз в приложении).