Вопрос

Я определил 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 пинание (или хочу избежать накладных расходов объединенного словаря ресурсов на уровне приложения, который я привел к веществу, не просто создается раз в приложении).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top