如何在代码后面访问在XAML中创建的DataContext类实例?

时间:2013-07-05 19:47:13

标签: c# wpf visual-studio-2010

MyData 是一个只存储 ColorName 属性的类。

在XAML中,我可以通过

为我的XAML datacontext创建一个实例
<c:MyData x:Key="myDataSource">

现在,

如何在我的代码中访问和更改此MyData实例(使用“myDataSource”键在XAML中创建)中存储的ColorName?

我希望问题很清楚。我想以编程方式更改颜色。如何获取MyData类实例?谢谢

<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 个答案:

答案 0 :(得分:14)

要从代码隐藏中访问资源,请为DockPanel命名,然后:

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

或者,您可以获取其DataContext:

var dataContext = dockPanel.DataContext as MyData