Pregunta

He definido un StringCollection en la configuración del proyecto. Quiero utilizar los valores en un cuadro combinado.

¿Hay una manera de acceder a él xamly?

Me trató:

<CollectionViewSource Source="{x:Static src:MySettings.Default.MyCollection}" />
<CollectionViewSource 
    Source="{Binding Source={x:Static src:MySettings.Default.MyCollection}}" />

**** src ** es xmlns del proyecto *

Se dice: "Tipo src: MySettings.Default no se encontró".

El caso es que MySettings es una clase que ofrece una propiedad predeterminada que es una instancia de flujos seguros de MySettings, realmente quieren obtener la colección de la propiedad por defecto y no por una instancia de un nuevo sucesivamente.

¿Hay otras maneras que no soy consciente de, tal vez ObjectDataProvider lata objetos estáticos acceso?

pensé, tal vez pueda hacer en el App.xaml un recurso global que MySettings.Default retorno que es una instancia de la clase MySettings, y luego acceder a todas sus propiedades, voy a tratar de eso, pero yo prefiero la fácil camino.

¿Fue útil?

Solución

Siempre he hecho usando el x: Estático de marcado de Extensión . La clave es establecer la fuente a Settings.Default y el camino a la configuración deseada de esta manera:

<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>

Otros consejos

He encontrado esto. El registro de salida, espero que no estoy perdiendo el tiempo ...

http://code.msdn.microsoft.com/StaticExExtension

Si usted tiene alguna idea mejor, por favor déjame saber.

Como una extensión de la respuesta de José, también es posible acceder a los ajustes individuales directamente con {x:Static } mediante el uso de una clase contenedora estática. Esto permite el uso de los valores de los ajustes en una unión no funcionará - más notablemente animaciones o propiedades que no son propiedades de dependencia

.

El enfoque básico es:

public static class XamlSettings 
{
     public static MySettingsMember { get {return Properties.MySettings.Default.MySettingsMember; }}
}

que a continuación se refiere en XAML en el marco del espacio de nombres de la clase contenedora está en la línea de <DoubleAnimation From="{x:Static local:XamlSettings.MySettingsMember}" ... />.

Como una adición a esto, tratar de exponer directamente por defecto no funciona, presumiblemente debido a que no es "suficiente" bastante estática - propiedades en defecto son propiedades de la instancia, que {x:Static} no le gusta. Probablemente podría escribir una extensión de marcado a medida que obtener propiedades de la instancia, sin embargo.

Esto es particularmente útil para un enfoque basado en los recursos para la animación en la que ni estrictamente hablando desea enlazar (que trae todo tipo de problemas congelables en juego), pero tampoco desea tener un montón de <sys:double x:Key="MyNumber">50.0</sys:double>s únicos dando vueltas (o que desee evitar la sobrecarga de un diccionario de recursos a nivel de aplicación fusionada, que yo tengo entendido que no es sólo una instancia vez a través de la aplicación).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top