从 UWP 中的 DataTemplate 生成的 UI 个元素的事件处理
Event Handling for UI elements generated from a DataTemplate in UWP
我正在努力找出如何响应按钮单击以外的任何事件(我可以使用 Command 来处理它们)。
如果从 DataTemplate 创建 ToggleSwitch,我将如何生成 "Toggled" 事件?
摘自 Microsoft 文档 ToggleSwitch Class
XAML:
<StackPanel Orientation="Horizontal">
<ToggleSwitch Header="Toggle Switch Example"
OffContent="Do work" OnContent="Working"
Toggled="ToggleSwitch_Toggled"/>
<ProgressRing x:Name="progress1"/>
</StackPanel>
代码隐藏:
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
ToggleSwitch toggleSwitch = sender as ToggleSwitch;
if (toggleSwitch != null)
{
if (toggleSwitch.IsOn == true)
{
progress1.IsActive = true;
progress1.Visibility = Visibility.Visible;
}
else
{
progress1.IsActive = false;
progress1.Visibility = Visibility.Collapsed;
}
}
}
如您在 XAML 中所见,您定义了一个 Toggled 事件处理程序来处理其状态的变化。
事件处理程序是在代码隐藏中自动创建的,您可以向其中添加您的逻辑。
在此示例中,您将发送者对象转换为 ToggleSwitch,您知道它是引发此事件的对象的类型,并且通过检查它的属性,您可以推断出 Switch 是否为 On/Off,并正确处理该状态,就像在上面的示例中所做的那样。
动态生成的 ToggleSwitch 事件:
假设我们的客户是一个 ObservableCollection 属性,您已将其定义为页面的 DataContext。根据它的大小,我们会在您的页面上显示相同数量的 ToggleSwitch,并且所有这些都会重定向到 ToggleSwitch_Toggled.
<ListBox ItemsSource="{Binding customers}" Width="350" Margin="0,5,0,10">
<ListBox.ItemTemplate>
<DataTemplate>
<ToggleSwitch Header="Toggle Switch Example"
OffContent="Do work" OnContent="Working"
Toggled="ToggleSwitch_Toggled"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这是您要找的吗?它可能还不是最有用的实现,因为仍然没有实现逻辑来理解哪个动态创建的 ToggleSwitch 引发了事件(都调用相同的事件处理程序)。
行为:
我正在努力找出如何响应按钮单击以外的任何事件(我可以使用 Command 来处理它们)。
如果从 DataTemplate 创建 ToggleSwitch,我将如何生成 "Toggled" 事件?
摘自 Microsoft 文档 ToggleSwitch Class
XAML:
<StackPanel Orientation="Horizontal">
<ToggleSwitch Header="Toggle Switch Example"
OffContent="Do work" OnContent="Working"
Toggled="ToggleSwitch_Toggled"/>
<ProgressRing x:Name="progress1"/>
</StackPanel>
代码隐藏:
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
ToggleSwitch toggleSwitch = sender as ToggleSwitch;
if (toggleSwitch != null)
{
if (toggleSwitch.IsOn == true)
{
progress1.IsActive = true;
progress1.Visibility = Visibility.Visible;
}
else
{
progress1.IsActive = false;
progress1.Visibility = Visibility.Collapsed;
}
}
}
如您在 XAML 中所见,您定义了一个 Toggled 事件处理程序来处理其状态的变化。 事件处理程序是在代码隐藏中自动创建的,您可以向其中添加您的逻辑。
在此示例中,您将发送者对象转换为 ToggleSwitch,您知道它是引发此事件的对象的类型,并且通过检查它的属性,您可以推断出 Switch 是否为 On/Off,并正确处理该状态,就像在上面的示例中所做的那样。
动态生成的 ToggleSwitch 事件:
假设我们的客户是一个 ObservableCollection 属性,您已将其定义为页面的 DataContext。根据它的大小,我们会在您的页面上显示相同数量的 ToggleSwitch,并且所有这些都会重定向到 ToggleSwitch_Toggled.
<ListBox ItemsSource="{Binding customers}" Width="350" Margin="0,5,0,10">
<ListBox.ItemTemplate>
<DataTemplate>
<ToggleSwitch Header="Toggle Switch Example"
OffContent="Do work" OnContent="Working"
Toggled="ToggleSwitch_Toggled"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这是您要找的吗?它可能还不是最有用的实现,因为仍然没有实现逻辑来理解哪个动态创建的 ToggleSwitch 引发了事件(都调用相同的事件处理程序)。
行为: