0

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 にオブジェクトの型だけでなく、作成している実際のオブジェクトのハンドルも取得する方法が必要だと思います。

4

1 に答える 1

1

残念ながら、WPF と Windows ストア アプリケーションの XAML 構文のわずかな違いに悩まされています。DockPanel の例は WPF (DockPanel はネイティブの Windows ストア コントロールではありません) であり、MainPage は Windows ストア アプリのように見えます。

名前空間宣言を次から変更します

xmlns:src="clr-namespace:HelloWindows"

xmlns:src="using:HelloWindows"

usingの Windows ストア バージョンですclr-namespace

于 2013-01-18T22:06:21.190 に答える