Я хотел бы знать, как установить свойство настраиваемого элемента управления из стиля.Установка родительского свойства из дочернего объекта
У меня есть пользовательский элемент управления, основанный на togglebutton под названием «Субстрат», на котором у меня есть свойство dependency под названием «SubstrateState». Он принимает значение перечисления как значение.
В отдельном файле у меня есть стиль, который добавляет контекстное меню в элемент управления.
Когда пользователь нажимает на один из элементов меню в контекстном меню, я хочу, чтобы свойство запускалось с некоторым предопределенным значением.
<Style TargetType="{x:Type local:Substrate}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Substrate}">
<Grid>
<Grid.ContextMenu>
<ContextMenu Background="#212121">
<MenuItem Header="Aborted">
<MenuItem.Style>
<Style TargetType="MenuItem">
<Style.Triggers>
<Trigger Property="IsPressed"
Value="True">
<Setter Property="{Binding SubstrateState, RelativeSource={RelativeSource AncestorLevel=local:Substrate}, Converter=converter:StringToSubstrateStatesConverter}"
Value="Aborted" />
</Trigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Когда я запускаю это я получаю: «Обеспечить значение на„System.Windows.Baml2006.TypeConverterMarkupExtension“бросил исключение.»
Внутреннее исключение "local: Субстрат является недопустимым значением для Int32."
Я поставил точки останова в своем конверторе значений, и они никогда не запускают так, чтобы они думали, что проблема в другом месте.
Что я делаю неправильно?
ли вы предоставить весь шаблон управления? С моей точки зрения что-то не так с вашим шаблоном, потому что я даже не вижу контекстного меню. – Alezis