Элемент Silverlight для привязки элемента в generic.xaml - PullRequest
0 голосов
/ 05 марта 2012

Есть ли способ связать элемент с элементом в шаблонных элементах управления 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".

1 Ответ

1 голос
/ 05 марта 2012

Вы не можете использовать это так. Привязка через ElementName должна использоваться к конкретному экземпляру элемента, а не к стилю. Вы можете создать другое свойство зависимости, скажем SliderValue в вашем CustomSlider элементе управления и привязать к нему.

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

И измените свой ползунок Value из шаблона при изменении свойства SliderValue;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...