私はコンテキストメニュー項目の1つに対してクリックイベントを作成しようとしていますが、以前は見たことのないエラーが表示されます。 Googleにはあまりにも多くの情報がありませんでした。私が理解できなかったので、私が見た情報は私を助けませんでした。WPFのコンテキストメニューでclickイベントを正しく発生させるには
エラーをスローラインは
'cmndOP_Click' を言っては有効ではありませんこれ
のGridView ColumnHeaderContainerStyle = "{StaticResource GridViewColumnHeaderStyle1}" です。 'Click'は 'System.Windows.Controls.GridView'のイベントではありません。
はエラーメッセージを読むと、「クリック」のGridViewで有効なイベントではありませんが、そのないのListViewItem内のGridViewのをしていることを私に伝えます。
このエラーの原因は何ですか?これを防ぐには、今後何をする必要がありますか?
その背後にある<ListView Margin="10,36,520,10" ScrollViewer.HorizontalScrollBarVisibility="Hidden" BorderBrush="Black" Padding="-1, -1, 1, 0" Background="Transparent" BorderThickness="1.000001" Name="lvUsers" Style="{DynamicResource ListViewStyle1}"> <ListView.ItemContainerStyle> <Style TargetType="{x:Type ListViewItem}"> <Setter Property="ContextMenu"> <Setter.Value> <ContextMenu> <MenuItem Name="cmndOP" Header="OP User" Click="cmndOP_Click"/> <MenuItem Header="Kick User"/> <MenuItem Header="Ban User"/> <MenuItem Header="Send Command"/> </ContextMenu> </Setter.Value> </Setter> <Setter Property="Background" Value="Transparent" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListViewItem}"> <Border BorderBrush="Transparent" BorderThickness="0" Background="{TemplateBinding Background}"> <GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/> </Border> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Foreground" Value="White" /> <Setter Property="Background" Value="#696969" /> <Setter Property="BorderBrush" Value="#696969" /> <Setter Property="BorderThickness" Value="0" /> </Trigger> <Trigger Property="IsSelected" Value="True"> <Setter Property="Foreground" Value="White" /> <Setter Property="Background" Value="#696969" /> <Setter Property="BorderBrush" Value="#696969" /> <Setter Property="BorderThickness" Value="0" /> </Trigger> </Style.Triggers> </Style> </ListView.ItemContainerStyle> <ListView.View> <GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle1}"> <GridViewColumn x:Name="GridViewColumnName" Header="Name" Width="165"> <GridViewColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image x:Name="Image_GridViewColumnName" Width="16" Height="16" Source="Images\minecraft.png" /> <Label Content="{Binding Username}" Visibility="Visible" /> </StackPanel> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>
そしてこの
private void cmndOP_Click(object sender, RoutedEventArgs e) { Commands cmd = new Commands(); cmd.OpUser(lvUsers.SelectedItem.ToString()); }
EDIT
ところエラーhappandsです。そう私は
<Style x:Key="GridViewColumnHeaderStyle1" TargetType="{x:Type GridViewColumnHeader}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GridViewColumnHeader}"> <Border BorderThickness="0,0,0,1" BorderBrush="Black" Background="Transparent"> <TextBlock x:Name="ContentHeader" Text="{TemplateBinding Content}" Padding="5,5,5,5" Width="{TemplateBinding Width}" TextAlignment="Center" /> </Border> </ControlTemplate> </Setter.Value> </Setter> <Setter Property="OverridesDefaultStyle" Value="True" /> <Setter Property="Foreground" Value="Black" /> <Setter Property="FontFamily" Value="Segoe UI" /> <Setter Property="FontSize" Value="12" /> </Style>
「GridViewColumnHeaderStyle1」は実際に問題が発生しているように見せてください。エラーテキストを読まずに質問に貼り付けましたか? –
なぜイベントを起こしたいですか?なぜイベントハンドラにあるコードを別のメソッドに入れて、そのメソッドを呼び出すのでしょうか? –
ああ!すぐに更新してください! –