を経由して、私は次のコードでシンプルなシルバーのUserControlを持っているのVisual Studio 2008内のSilverlight 2.0の最新のバージョンを使用しています、ページのXAMLは、このように見える:更新Silverlightのユーザーコントロールは、XAML
<UserControl x:Class="SilverlightApplication1.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:test="clr-namespace:SilverlightClassLibrary1;assembly=SilverlightClassLibrary1"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="Green">
<test:SilverlightControl1 Name="uControl1">
<test:SilverlightControl1.Composite>
<test:Composite Color="Yellow"/>
</test:SilverlightControl1.Composite>
</test:SilverlightControl1>
</Grid>
</UserControl>
私の質問です:私は上記に追加する必要がありますどのようなコードので、イエロー以外のものに「合成カラー」を変更し、戻るボタンを押すことで、 UserControlは自動的に更新されますか?コードがあるように、UserControlを更新する唯一の方法は、Silverlightページのパーセンテージズームを変更するVS2008 IDE内のスライダバーを移動することです。上の質問にはそれほど重要ではありませんが、上のコードでは、なぜLayoutRootの「背景」の色を変更できないのですか? UserControlを削除すると、期待どおりに機能します。
回答ありがとうございました。あなたが示唆したように、私はCompositeプロパティとColorプロパティをDependencyプロパティとして実装しましたが、残念ながらこれは問題に何の違いも生じませんでした! –
コードを見ると、OnLoadedイベントの色を設定していることが問題だと思います。色を変更しているときに、VSがコントロールをリロードしないようにして、イベントが再び発生しないようにします。 Rectangleの塗りつぶしをColorの値に設定する代わりに、代わりにバインドしてみてください。 Colorが変わると、Dependencyプロパティが起動し、それを更新します。 –
ありがとうCorrel! DependencyObject.GetValueとSetValueを使用して、DependencyプロパティとしてColorプロパティを実装しました。 Rectangleの塗りつぶしを設定すると、Colorプロパティは既に従属プロパティにバインドされていますか? –