私はWindows Phone 7 Appをビルドしています。だから、私はSilverLight 3(.7)を使用しており、私が構築したUserControlsには少し問題があります。WP7 UserControlでデータバインディングを行う正しい方法
<MyUserControl Number="{Binding ElementName=MyPage, Path=SomeNumber}">
<MyUserControl Number="{Binding ElementName=MyPage, Path=SomeOtherNumber}">
このすべてが素晴らしい作品が、私の場合は:
ユーザーコントロールは、私は単純にやっている、それを使用するには数
<UserControl x:Class="MyUserControl" x:Name="myUserControl">
<TextBlock Text="{Binding ElementName=myUserControl, Path=Number}"/>
</UserControl>
をするDependencyPropertyを指名した。ここで私は今それをやっている方法です私のコントロールの2つのインスタンスのうちの1つに名前を追加すると、何か変なことになります。例:
<MyUserControl x:Name="SomeNumberControl"
Number="{Binding ElementName=MyPage, Path=SomeNumber}">
<MyUserControl Number="{Binding ElementName=MyPage, Path=SomeOtherNumber}">`
次にデータは表示されません。指定された名前がUserControlで指定された名前をオーバーライドし、バインディングが機能しないようです。
私はdatacontextでバインドしようとしました。また、DataContextをUserControlに設定します。
ので、私のコントロールはなった:バインドされます。この何もない
<UserControl x:Class="MyUserControl"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<TextBlock Text="{Binding Number}"/>
</UserControl>
。これは、datacontextが決して設定されていない、私が作成した別のユーザコントロールにこのコントロールを置くと奇妙なものでもあります。親コントロールが何らかの形でMyUserControlインスタンスにバインドされているようです。
だから私は、次の操作を実行したとき:
<MyPage>
<MyUserControl Number={Binding SomeNumber}"/>
私はエラーを取得し、
SomeNumber型MyUserControlには見られません。
親コントロールのバインディングがMyUserControlのインスタンスになっているかのようです。私はユーザーコントロールのバインディングをどうやって基本的に間違っているのか、それともSilverLight 4とWP7では何か変わったことですか?
これに関するお手伝いをさせていただきます。
こんにちはマイケル、 あなたのポストをありがとう、私は** **同じ正確な問題に実行しています。私は私のusercontrolにx:Nameを与えると、データバインディングは機能しなくなります。 は残念ながら、私はあなたが手の込んだてもらえ **あなたは**私はすべての参照と命名されるように参照を変更し、それが機能するようになりましたことにより、何を意味するか理解しません。 ありがとう:) –
'DataContext =" {バインディングRelativeSource = {RelativeSource Self}} "はコードの匂いです。 – Will