0

テンプレート ファイルに contextmenuitem とハンドラーと共に contextmenu を追加しようとしています。前者は問題ありませんが、VS ではテンプレート ファイルのメニュー項目にイベント ハンドラを追加できません。

<ControlTemplate TargetType="{x:Type local:CalendarDayView}">
                    <ControlTemplate.Resources>
                        <ContextMenu x:Key="dayEntryContextMenu">
                            <MenuItem Header="Remove entry" Click="removeEntryBtn"/>
                        </ContextMenu>
                    </ControlTemplate.Resources>
                    <Border BorderBrush="Gray" BorderThickness="1" Width="100" Height="100">
                        <Grid Name="contentGrid">
                        <ListBox Name="entriesListBox" Background="LightYellow" ContextMenu="{StaticResource dayEntryContextMenu}">
                            <ListBoxItem>Test entry #1</ListBoxItem>
                            <ListBoxItem>Test entry #2</ListBoxItem>
                            <ListBoxItem>Test entry #3</ListBoxItem>
                        </ListBox>
                        <!-- Date display below -->
                        <TextBlock Name="dateTextBlock" Text="31-Nov" FontFamily="Segoe UI Light" FontSize="18" VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
                        </Grid>
                    </Border>
                </ControlTemplate>

エラー 1 'ResourceDictionary' root element requires ax:Class attribute to support event handlers in the XAML file. Click イベントのイベント ハンドラーを削除するか、ルート要素に ax:Class 属性を追加します。行 37 位置 61。

これを機能させる方法はありますか?

4

1 に答える 1

1

問題は、イベント ハンドラーをコード ビハインド ファイルに実装する必要があることですが、背後に *.cs ファイルがなく、xaml ファイルしかないため、VS はイベント ハンドラーを実装する場所を認識しません。

これを修正するには、xaml ファイルのコード ビハインド ファイルを追加する必要があります。そのコード ビハインド ファイルで、resourcedictionary (ControlTemplate が保存されている場所) のクラスを定義する必要があります。その後、xaml ファイルで "x:class" 属性を定義できます。その後、イベント ハンドラーを定義できるようになります。

詳細については、こちらを参照してください

于 2014-10-29T22:01:33.407 に答える