2010-08-30 10 views
9

Quiero vincularme a un recurso (DynamicResource) y acceder a las propiedades en ese recurso, pero ¿hay alguna manera de hacerlo?Cómo enlazar con un recurso dinámico y especificar una ruta

(I quiere visualizar los valores por defecto desde el constructor en el editor XAML en Visual Studio. Los que no se puede ver al hacer referencia a un objeto a través DataContext ni a través de una propiedad añadida en mi clase de la ventana ...)

xaml no funciona: (funciona en el compositor pero no en tiempo de ejecución ...)

<Window ... > 
    <Window.Resources> 
     <local:MyClass x:Key="myResource" /> 
    </Window.Resources> 
    <StackPanel> 
     <Button Content="{Binding Source={DynamicResource myResource} Path=Property1}" /> 
     <Button Content="{Binding Source={DynamicResource myResource} Path=Property2}" /> 
    </StackPanel> 
</Window> 

con la clase (que probablemente tendrá que poner en práctica INotifyPropertyChanged):

public class MyClass 
{ 
    public MyClass() 
    { 
     this.Property1 = "Ok"; 
     this.Property2 = "Cancel"; 
    } 
    public string Property1 { get; set; } 
    public string Property2 { get; set; } 
} 

Respuesta

19

Esto se debe a que la extensión de marcado DynamicResource solo se puede usar en una propiedad de dependencia, ya que necesitará actualizarla si el recurso cambia. Y Binding.Source no es una propiedad de dependencia ...

Como solución alternativa, se podría establecer el DataContext del botón con el DynamicResource:

<Button DataContext="{DynamicResource myResource}" Content="{Binding Path=Property1}" /> 
<Button DataContext="{DynamicResource myResource}" Content="{Binding Path=Property2}" /> 
+1

+1, esto parece ser un trabajo más limpio alrededor y I' he hecho esto con buenos resultados – marr75

+1

No se olvide de aceptar la respuesta;) –

Cuestiones relacionadas