Вот рабочий пример моей проблемы: https://github.com/themimcompany/AttachedPropertyIssue
У меня есть Style
для Button
, который определяет ControlTemplate
. Внутри ControlTemplate
у меня есть TextBlock
с таким же вложенным свойством. Я хочу установить / связать свойство присоединенного TextBlock
со значением присоединенного свойства Button
. Прикрепленное свойство является простым int
значением.
Как мне заставить это работать? Можно ли это сделать в UWP? Я получаю ошибки, которые не дают мне указаний о том, как это исправить. Как Unspecified error
...
Вот мой стиль:
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock local:Translation.TranslationModelID="{Binding Path=(local:Translation.TranslationModelID),
RelativeSource={RelativeSource TemplatedParent}}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Вот мое определение прикрепленного свойства:
public class Translation
{
public static int GetTranslationModelID(DependencyObject obj)
{
return (int)obj.GetValue(TranslationModelIDProperty);
}
public static void SetTranslationModelID(DependencyObject obj, int value)
{
obj.SetValue(TranslationModelIDProperty, value);
}
public static readonly DependencyProperty TranslationModelIDProperty =
DependencyProperty.RegisterAttached("TranslationModelID", typeof(int), typeof(FrameworkElement), new PropertyMetadata(0));
}
Вот кнопка, которую я пытаюсь определить, обратите внимание, что я хочу назначить прикрепленное свойство кнопки - затем возьмите значение в ControlTemplate и присвойте его свойству присоединенного свойства TextBlock (посмотрите на стиль):
<Button local:Translation.TranslationModelID="1" />
Объяснение еще раз: У меня есть прикрепленное свойство, назначенное для Button
, и я хотел бы присвоить значение присоединенного свойства этого Button
к тому же присоединенному свойству TextBlock
в ControlTemplate
этого Button
Style
. Это не работает, как я ожидаю. Я получаю Unspecified error..
исключение во время выполнения. Как мне заставить это работать?
Вот рабочий пример моей проблемы: https://github.com/themimcompany/AttachedPropertyIssue
EDIT:
Этот подход дает мне другую ошибку. The property 'TranslationModelID' was not found in type 'PassingAttachedPropertyInControlTemplater.Translation'. [Line: 17 Position: 40]
<Page.Resources>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock local:Translation.TranslationModelID="{TemplateBinding local:Translation.TranslationModelID}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<Grid>
<Button x:Name="btn" local:Translation.TranslationModelID="1" />
</Grid>