0

假设我有一个 WPF 表单,用于管理叉车 (FL) 和其他设备(使用 SQL/LINQ)的员工培训和评估。我已经设置了设置,因此,当检查了培训的复选框时,它会使文本框(用于输入日期),并且复选框进行评估,反之亦然。

有没有办法做到这一点,以便我可以使用通用的“检查”方法,该方法基于我单击的哪个培训复选框,以便为每件设备复制粘贴它?

FLT是Fork Life Training,FLE是Evaluation

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

我希望我没有弄得那么混乱。

4

2 回答 2

1

你在说这个吗:

<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一个或多个控件的属性......任何地方都没有事件处理程序见过!

此外,您可以只使用 aGrid对控件进行分组并在其上设置Visibility属性以使所有控件一次可见或隐藏。我希望这会有所帮助。

于 2013-09-19T15:56:42.587 回答
0

您需要将控件的可见性绑定到复选框的选中状态。在代码中不使用 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>
于 2013-09-19T16:48:53.420 回答