C# WPF 组控件并使用相对事件方法
本文关键字:相对 事件 方法 WPF 控件 | 更新日期: 2023-09-27 18:31:55
>假设我有一个 WPF 表单,用于管理叉车 (FL) 和其他设备(使用 SQL/LINQ)的员工培训和评估。我已经设置了它,因此当选中"培训"复选框时,它会使文本框(用于输入日期)和用于评估的复选框变为可见,反之亦然。
有没有办法做到这一点,以便我可以使用通用的"选中"方法,根据我单击的训练复选框来复制粘贴每个设备?
(FLT 是叉寿命训练,FLE 是评估)
private void Checked(object sender, RoutedEventArgs e)
{
FLT_txt.Visibility = Visibility.Visible;
FLE_ck.Visibility = Visibility.Visible;
}
//Basically a reverse of the above, just here for example's sake
private void Unchecked(object sender, RoutedEventArgs e)
{
FLT_txt.Visibility = Visibility.Hidden;
FLE_ck.Visibility = Visibility.Hidden;
}
我希望我没有混淆。
你说的是这个吗:
<Grid ToggleButton.Checked="Grid_Checked">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Content="1" />
<CheckBox Grid.Row="1" Content="2" />
<CheckBox Grid.Row="2" Content="3" />
</Grid>
private void Grid_Checked(object sender, RoutedEventArgs e)
{
CheckBox checkBox = (CheckBox)e.Source;
if (checkbox.Content = "1") DoSomething();
else DoSomethingElse();
}
更新>>>
今晚没有时间帮忙了...只是给你一些提示...在线查看BooleanToVisibilityConverter
- 有了这个,您可以将 Checkbox.IsChecked
属性直接绑定到一个或多个控件的 Visibility
属性...任何地方都看不到事件处理程序!
此外,只需使用 Grid
对控件进行分组,并在其上设置 Visibility
属性,以使所有控件同时可见或隐藏。我希望这有所帮助。
您需要将控件的可见性绑定到复选框的选中状态。如果不在代码中使用 MVVM 模式或任何支持属性,最简单的实现如下所示...
在 XAML 中,请确保定义完成此操作所需的静态资源(转换器)。您需要为转换器 C# 代码所在的任何位置添加命名空间。
<Window.Resources>
<wpfApplication1:BoolToVisibilityConverter x:Key="BoolToVisibility" />
</Window.Resources>
转换器如下所示,并且可能是每个应用程序都应该具有的东西,除其他外。
public class BoolToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool && !(bool) value)
return Visibility.Collapsed;
return Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我们需要一个转换器,因为控件的可见性由枚举值(Visibility.Whatever)而不是布尔值表示。我们将 "IsChecked" 的布尔值转换为适当的枚举值并对其进行设置。
在 UI 中引用转换器以切换可见性。XAML 如下所示。
<StackPanel>
<CheckBox Name="ShowOrHide" Content="Toggle Me!" />
<TextBox Visibility="{Binding IsChecked,
ElementName=ShowOrHide,
Converter={StaticResource BoolToVisibility}}" />
</StackPanel>