2012-03-05 7 views
0

Silverlightテンプレートコントロールで要素から要素へのバインディングを行う方法はありますか?Silverlight要素からgeneric.xaml要素へのバインディング

例:私は2つのカスタムコントロール、SomeControlCustomSliderを持っています。 SomeControlにはsomeValueという依存関係プロパティがあります。

<Style TargetType="local:SomeControl"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="local:SomeControl"> 
       <...> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
<Style TargetType="local:CustomSlider"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="local:CustomSlider"> 
       <Slider Value="{Binding someValue, ElementName=local:SomeControl}" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

と、これは私の依存関係プロパティです:

public int someValue, 
    { 
     get { return (int)GetValue(someValueProperty); } 
     set { SetValue(someValueProperty, value); } 
    } 
    public static readonly DependencyProperty (someValueProperty) = 
     DependencyProperty.Register(someValue); typeof(int), typeof(SomeControl, 
      new PropertyMetadata(0)); 
私generic.xamlファイルは次のようになりますので、私は、このプロパティに CustomSliderの値をバインドしたいです

これは、 "BindingExpression_CannotFindElementName"例外をスローします。

答えて

1

このように使用することはできません。 ElementNameによるバインディングは、スタイルではなく特定の要素インスタンスに使用する必要があります。 CustomSliderコントロールに他の依存関係プロパティ、たとえばSliderValueを作成してバインドすることができます。

<local:SomeControl x:Name="SomeControl"/> 
<local:CustomSlider SliderValue="{Binding someValue, ElementName=SomeControl}"/> 

、テンプレートから自分のスライダーValueを変更すると、あなたのSliderValueプロパティの変更。

関連する問題