无法在Xaml中引用clr对象进行数据绑定

时间:2013-01-18 21:37:43

标签: data-binding windows-8 windows-applications

我正在尝试跟随数据绑定到clr-object的代码示例。

示例说明

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

但是,我似乎在使用我的XAML

从我创建的对象(在C#中)获取引用时遇到了问题
<Page
    x:Class="HelloWindows.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:HelloWindows"
    xmlns:src="clr-namespace:HelloWindows"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Page.Resources>
        <src:MainPage+Person x:key="person" />
    </Page.Resources>

这是我的C#

  public Person person = new Person();

    public class Person
    {
        public String name { get; set; }
    }

我创建了“src”命名空间,如图所示。但是,Visual Studio无法识别“Person”并希望在其前面添加“MainPage + Person”。我收到以下错误

  

添加到IDictionary的所有对象必须具有Key属性或其他属性   与其相关的其他类型的密钥。

所以我对此感到困惑,也对“MainPage + Person”感到困惑。我想我需要一种方法来告诉XAML不仅是对象的类型,而且还可以处理我正在创建的实际对象。

1 个答案:

答案 0 :(得分:1)

不幸的是,您受到WPF和Windows应用商店应用的XAML语法略有不同的挑战。 DockPanel示例是WPF(DockPanel不是本机Windows应用商店控件),您的MainPage似乎来自Windows应用商店应用。

更改名称空间声明
xmlns:src="clr-namespace:HelloWindows"

xmlns:src="using:HelloWindows"

usingclr-namespace的Windows应用商店版本。