1

私のプロジェクトでは、テキストブロックとテキストボックスを組み合わせたユーザー コントロールを使用したいと考えています。次のようなユーザーコントロールのカスタムプロパティを作成できます

  public string Caption
    {
        get
        {
            return this.Block.Text;
        }
        set
        {
            this.Block.Text = value;
        }
    }

    public string Value
    {
        get
        {
            return this.Box.Text;
        }
        set
        {
            this.Box.Text = value;
        }
    }

このユーザーコントロールでテキストブロックのバインディングも設定したいと思います。以下のように依存関係プロパティを使用する必要があることはわかっています。

  public string fieldValue
    {
        get
        {
            return (string)GetValue(fieldValueProperty);
        }
        set
        {
            SetValue(fieldValueProperty, value);
        }
    }          
    public static readonly DependencyProperty fieldValueProperty =
        DependencyProperty.Register("fieldValue", typeof(string), typeof(TextBlox), 
        new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); 

私の実際のアプリケーションでは:

  <my:TxtBlox HorizontalAlignment="Left" Name="txtBlox1"                      
                 fieldValue="{Binding Path=ProdCode,Mode=TwoWay}"
                 VerticalAlignment="Top" Width="228" />

このコントロールのコンテナーのデータ コンテキストをデータベース オブジェクトに設定しています。

 oProd = dt.ProdInfoes.First();
        Main.DataContext = oProd;

しかし、私はそれを機能させることができません。助言がありますか?

4

1 に答える 1

2

それらにバインドする場合は、単純なプロパティの代わりにDependencyProperties を作成する必要がCaptionあります。Valueユーザーコントロールxamlで、バインディングを使用してプロパティへのバインディングを設定する必要がありますElementNameこの投稿を参照してください

于 2012-07-20T11:10:43.553 に答える