2013-07-05 10 views
5

MyData ist eine Klasse, die einfach eine ColorName Eigenschaft speichert.Wie Zugriff auf DataContext-Klasseninstanz in XAML in Codebehind erstellt?

In XAML ich eine Instanz für meine XAML Datacontext nun von

<c:MyData x:Key="myDataSource"> 

erstellen kann,

Wie greife ich auf und den Farbnamen in diesem Fall von MyData gespeichert ändern (die in XAML erstellt wurden mit "myDataSource" Schlüssel) in meinem Code hinter?

Ich hoffe, die Frage ist klar. Ich möchte die Farbe programmgesteuert ändern. Wie bekomme ich die MyData-Klasseninstanz? Danke

<DockPanel 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:c="clr-namespace:SDKSample"> 
    <DockPanel.Resources> 
    <c:MyData x:Key="myDataSource"/> 
    </DockPanel.Resources> 
    <DockPanel.DataContext> 
    <Binding Source="{StaticResource myDataSource}"/> 
    </DockPanel.DataContext> 
    <Button Background="{Binding Path=ColorName}" 
      Width="150" Height="30">I am bound to be RED!</Button> 
</DockPanel> 
+1

Bitte beachten [ meiner Meinung] (http://stackoverflow.com/a/16991850/643085) zu diesem Thema. –

+0

@HighCore sicherlich interessant + 1d blind --- aber angesichts meiner derzeitigen Kompetenz, nicht in der Lage zu kommentieren: p Ich bin sicher, ich werde eine Meinung haben 211 Äpfel später –

Antwort

13

Um eine Ressource aus zugreifen Code-behind, geben dem DockPanel einen Namen und dann:

var resource = dockPanel.Resources["myDataSource"]; 

Alternativ Sie seine Datacontext bekommen:

var dataContext = dockPanel.DataContext as MyData 
+0

Danke, das hat für mich funktioniert! –

+2

Ihre 'Alternative' ist Superlativ –

Verwandte Themen