有没有办法在Silverlight模板控件中使元素绑定?
示例:我有两个自定义控件SomeControl
和CustomSlider
。 SomeControl
有一个名为someValue
的依赖项属性。我想将CustomSlider
的值绑定到此属性,因此我的generic.xaml文件如下所示:
<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));
抛出“BindingExpression_CannotFindElementName”异常。
答案 0 :(得分:1)
你不能这样使用它。通过ElementName
的绑定应该用于特定的元素实例,而不是样式。您可以在SliderValue
控件中创建其他依赖项属性,例如CustomSlider
并绑定到它。
<local:SomeControl x:Name="SomeControl"/>
<local:CustomSlider SliderValue="{Binding someValue, ElementName=SomeControl}"/>
当Value
属性更改时,从模板更改您的滑块SliderValue
;