我很难找到如何响应按钮点击以外的任何事件(我可以使用Command来处理它们)。
如果从DataTemplate创建ToggleSwitch,我将如何生成“Toggled”事件?
答案 0 :(得分:0)
取自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中哪个引发了事件(所有调用相同的事件处理程序)。
<强>行为:强>