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;
}

我希望我没有混淆。

C# WPF 组控件并使用相对事件方法

你说的是这个吗:

<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>