2011-01-23 1 views
0

ここで説明する標準コントロールをラップしました。Quickest way to inherit a standard control in WPF?ユーザーコントロールにラップされた標準wpfコントロールのプロパティとイベントを自動的に公開する方法はありますか?

ユーザーコントロールです。今、ユーザーコントロールにラップされた標準wpfコントロールのプロパティとイベントを自動的に公開する方法はありますか?自動バブルルーティングのようなものを使うことができますか?

それ以外の場合は、コンポーネントのプロパティラッパーとイベントラッパーも作成する必要がありますが、これは面倒です。

+0

あなたがリンクした質問に対する回答は、問題がかなりうまく説明されていることを説明しています。コントロールで標準のWPFコントロールのプロパティとイベントを公開する場合は、ユーザーコントロールではなくカスタムコントロールにします。ユーザーコントロールには、明示的に実装するプロパティとイベントしかありません。 –

答えて

1

はい、プロパティを外部に公開するには、ユーザーコントロールに新しい依存関係プロパティを提供する必要があります。 TimeframeSelector.xaml

あなたは、あなたがそうでなければ、ビジュアルツリー内のDPを見つけることができませんと結合RelativeSourceを使用する必要が

<DatePicker SelectedDate="{Binding Path=StartDate, 
          RelativeSource={RelativeSource Mode=FindAncestor, 
           AncestorType={x:Type ctrl:TimeframeSelector}}}"/> 

TimeframeSelector.xaml.cs

public DateTime StartDate 
    { 
     get{ return (DateTime)GetValue(StartDateProperty);} 
     set { SetValue(StartDateProperty, value); } 
    } 

    public static readonly DependencyProperty StartDateProperty = 
     DependencyProperty.RegisterAttached(
     "StartDate", 
     typeof(DateTime), 
     typeof(TimeframeSelector), 
     new FrameworkPropertyMetadata(
      DateTime.MinValue, 
      FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); 

:一例として、 。 Visual Studioを使用している場合、depedendencyプロパティを非常に高速に作成するために使用できるpropdpというテンプレートがあります。

関連する問題