過去に、仮想化を使用しているときに、表示された後にDataContextが変更されることを実際には予期していなかったカスタムコントロールを使用しているときに、このような問題が発生しました。
パネルが(聞こえるように)新しいDataContextを再利用されたオブジェクトに正しく渡している場合、再利用されたオブジェクトがDataContextの変更を正しく処理していないように聞こえます。(あなたが話しているこの「レンダリング」呼び出しは、新しいDataContextを取得し、それを表示します。)
コントロールでプレーンデータバインディングを使用している場合、私は少し困惑しています。(新しいDataContextを取得した後、パネルはコントロールを再測定/配置しますか?)
私たちの修正は、DataContextが変更されたときにコントロールがリッスンするようにすることでした。(これは、仮想化パネルをデバッグして、DataContextが正しく入ってくることをテストする場合にも役立ちます。)
残念ながら、OnDataContextChangedメソッドはSilverlightで公開されていませんが、それらにバインドすることでDCの変更について知ることができます。
public MyClass()
{
InitializeComponent();
SetBinding(MyDataContextProperty, new Binding());
}
private static readonly DependencyProperty MyDataContextProperty =
DependencyProperty.Register("MyDataContext",
typeof(object),
typeof(MyClass),
new PropertyMetadata(DataContextChanged));
private static void DataContextChanged(
object sender,
DependencyPropertyChangedEventArgs e)
{
MyClass source = (MyClass)sender;
source.OnDataContextChanged();
}
private void OnDataContextChanged()
{
// My DataContext has changed; do whatever is needed.
// re 'render' in your case?
}