复选框已选中或单击事件未在数据模板中触发

checkbox checked or click event not firing in datatemplate

我的数据模板中有一个复选框,但出于某种原因事件没有触发。请参阅下面的代码。我的数据模板在一个带有代码隐藏文件的资源字典中。有什么想法吗?

<ResourceDictionary x:Class="ArmyBuilder.Templates.EquipmentDataTemplate"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

>

<DataTemplate x:Key="EquipmentDataTemplate">
    <Grid>
        <CheckBox Content="{Binding Name}" Checked="ToggleButton_OnChecked" Click="CheckBox_Click"/>
    </Grid>
</DataTemplate>

 //code behind 
 namespace ArmyBuilder.Templates
{
public partial class EquipmentDataTemplate : ResourceDictionary
{
    public EquipmentDataTemplate()
    {
        InitializeComponent();
    }

    private void ToggleButton_OnChecked(object sender, RoutedEventArgs e)
    {
      // breakpoint not hit
    }

    private void CheckBox_Click(object sender, RoutedEventArgs e)
    {
         // breakpoint not hit
     }
      }
}

我不确定你是如何使用它的,但你的代码对我有用并且点击事件被触发了。检查以下内容,如果仍然找不到要点,请分享一个复现项目以显示您的使用情况。

模板XAML:

<ResourceDictionary x:Class="App10.EquipmentDataTemplate"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 >

    <DataTemplate x:Key="EquipmentDataTemplate">
        <Grid>
            <CheckBox Content="Click Me" Checked="ToggleButton_OnChecked" Click="CheckBox_Click"/>
        </Grid>
    </DataTemplate>
</ResourceDictionary>

模板 cs:

namespace App10
{
    public sealed partial class EquipmentDataTemplate : ResourceDictionary
    {
        public EquipmentDataTemplate()
        {
            this.InitializeComponent();
        }

        private void ToggleButton_OnChecked(object sender, RoutedEventArgs e)
        {
            // breakpoint not hit
        }

        private void CheckBox_Click(object sender, RoutedEventArgs e)
        {
            // breakpoint not hit
        }
    }
}

在 MainPage.Xaml 中,在 ListView 中使用模板:

<Page
    x:Class="App10.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App10"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Page.Resources>
        <local:EquipmentDataTemplate></local:EquipmentDataTemplate>
    </Page.Resources>

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ListView x:Name="listView" CanReorderItems="True" AllowDrop="True" ItemTemplate="{StaticResource EquipmentDataTemplate}">

        </ListView>

    </Grid>
</Page>

在 MainPage cs:

namespace App10
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            var list = new ObservableCollection<string>();
            for (int i = 0; i < 10; i++)
            {
                list.Add("Item " + i);

            }
            listView.ItemsSource = list;
        }
    }
}