3

スタイルからカスタム コントロールのプロパティを設定する方法を知りたいです。

「SubstrateState」という依存プロパティを持つ「Substrate」というトグルボタンに基づくカスタム コントロールがあります。列挙型を値として取ります。

別のファイルには、コンテキスト メニューをコントロールに追加するスタイルがあります。

ユーザーがコンテキスト メニューのメニュー項目の 1 つを押すと、プロパティが事前定義された値でトリガーされるようにします。

<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:Substrate は Int32 の有効な値ではありません。」

値コンバーターにブレークポイントを設定しましたが、トリガーされないため、問題は別の場所にあると考えています。

私は何を間違っていますか?

4

1 に答える 1