0

実行時に入力されるカスタムオブジェクトタイプの依存関係プロパティがあります。正しく更新され、corect情報がこのオブジェクトに保存されています。

ただし、このオブジェクトのプロパティをテキストブロックにバインドしようとすると、テキストが表示されません(データが確実に含まれているにもかかわらず)。

したがって、オブジェクトタイプが次のようになっているとしましょう。

Public class CustomObject{
[Key]
 public int Id { get; set; }
 public string Name { get; set; }
 }

このオブジェクトは確実に入力されています。ブレークポイントを使用してこれを確認しました。

このオブジェクトタイプの依存関係プロパティを作成します。これは間違いなく正しく機能します。これも検証済みです。依存関係プロパティSelectedCustomObjectを呼び出しましょう。

そして、この依存関係プロパティを自分のビューにバインドします:

 <TextBlock  Text="{Binding SelectedCustomObject.Name, Mode=TwoWay}" FontSize="10" VerticalAlignment="Center" HorizontalAlignment="Center"/>

DataContextはユーザーコントロールで設定されます。同じビューモデル内の他の依存関係プロパティにいくつかのバインディングを作成し、それらが完全に機能するため、これは間違いなく機能します。

したがって、削除のプロセスでは、XAML構文がオフになっていると想定することしかできず、このように入力されて機能している依存関係プロパティにバインドすることはできません。

誰かが私のためにこれにいくつかの光を当てることができますか?

4

3 に答える 3

1

私の質問に対する答えは、Silverlightが別のキャッシュを維持していたため、何らかの理由で新しい依存関係プロパティが読み込まれなかったということでした。

.XAPファイルを削除して再生成しましたが、何もありません。

IEキャッシュをクリアしましたが、何もありません。

スタートメニューからMicrosoftSilverlightを開き、[アプリケーションストレージ]タブに移動してすべてを削除しました。更新すると、すべての作業が表示されました。

幸せな日々。

これが他の誰かに役立つことを願っています:)。

于 2012-07-12T10:18:13.047 に答える
0

CustomClassはINotifyPropertyChangedを実装する必要があるため、UIに変更が通知されます

于 2012-07-11T16:59:40.513 に答える
0

Nameビューがプロパティにバインドされた後に値が設定されている可能性があります。@Ernoが指摘したように、ビューには変更が通知されません。実装すると、プロパティが変更されたことをビューに通知 INotifyPropertyChangedできるようになります。CustomObject

実装は次のようになります。

public class CustomObject : INotifyPropertyChanged
{
    [Key]
    public int Id { get; set; }

    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            NotifyPropertyChanged("Name");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}
于 2012-07-11T17:02:59.017 に答える