2013-07-05 25 views
5

MyData là một lớp học chỉ đơn giản là lưu trữ một tài sản ColorName.Cách truy cập cá thể lớp DataContext được tạo trong XAML trong codebehind?

Trong XAML tôi có thể tạo ra một thể hiện cho DataContext XAML của tôi bằng cách

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

Bây giờ,

Làm thế nào để truy cập và thay đổi ColorName lưu trữ trong trường hợp này của MyData (được tạo ra trong XAML với "myDataSource" chìa khóa) trong mã của tôi phía sau?

Tôi hy vọng câu hỏi là rõ ràng. Tôi muốn thay đổi màu sắc theo chương trình. Làm cách nào để giữ lại phiên bản lớp MyData? Cảm ơn bạn

<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

Hãy cân nhắc [ ý kiến ​​của tôi] (http://stackoverflow.com/a/16991850/643085) về điều này. –

+0

@HighCore chắc chắn thú vị + 1d mù quáng --- tuy nhiên với mức năng lực hiện tại của tôi, không phải ở một vị trí để bình luận một trong hai cách: p Tôi chắc chắn tôi sẽ có một ý kiến ​​211 táo sau –

Trả lời

13

Để truy cập vào một nguồn tài nguyên từ mã-đằng sau, cung cấp cho các DockPanel một tên và sau đó:

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

Ngoài ra, bạn có thể nhận được DataContext của nó:

var dataContext = dockPanel.DataContext as MyData 
+0

Thankyou, mà làm việc cho tôi! –

+2

'Phương án' của bạn là bậc nhất –

Các vấn đề liên quan