Как сохранить значение элемента управления WPF как параметр свойства в app.config? - PullRequest
2 голосов
/ 14 мая 2010

У нас есть приложение Windows WPF, которое содержит элемент управления стека, который я хочу видеть только для тестирования, но не когда он находится в производстве.

Мы хотели бы сохранить значение видимости этой стековой панели в файле конфигурации приложения (app.config).

Как WPF это делает?

Ответы [ 2 ]

1 голос
/ 14 мая 2010

Вы можете использовать следующее расширение разметки для привязки к настройке:

<StackPanel Visibility="{my:SettingBinding StackPanelVisibility}">
...

(при условии, что настройка сохранена как значение Visibility (Видимый / Свернутый / Скрытый))

1 голос
/ 14 мая 2010

Сначала вы создаете свое свойство в Visual Studio. Для этого перейдите в раздел «Свойства / Настройки проекта» и создайте область применения Application bool ShowMyStackPanel. Это автоматически (1) создаст класс Settings в пространстве имен Properties и (2) добавит следующее в ваш app.config:

<configuration>
    ...
    <applicationSettings>
        <CsWpfApplication1.Properties.Settings>
            <setting name="ShowMyStackPanel" serializeAs="String">
                <value>False</value>
            </setting>
        </CsWpfApplication1.Properties.Settings>
    </applicationSettings>
</configuration>

В вашем окне WPF теперь вы можете просто привязать к Properties.Settings.Default.ShowMyStackPanel, используя BooleanToVisibilityConverter:

<Window ...
    xmlns:prop="clr-namespace:CsWpfApplication1.Properties"
    ...>
    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="MyBoolToVisibilityConverter" />
    </Window.Resources>
    ...
        <StackPanel Visibility="{Binding Source={x:Static prop:Settings.Default},
                                         Path=ShowMyStackPanel,
                                         Converter={StaticResource MyBoolToVisibilityConverter}}">
            ...
        </StackPanel>
    ...
</Window>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...