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

C#WPF组控件并使用相对事件方法,c#,wpf,C#,Wpf,假设我有一个WPF表格,用于管理叉车(FL)和其他设备员工的培训和评估(使用SQL/LINQ)。我有它的设置,所以当选中培训复选框时,它会使文本框(用于输入日期)和评估复选框变得可见,反之亦然 是否有一种方法可以使我使用一种通用的“选中”方法,根据我点击的培训复选框复制粘贴每件设备 (FLT是生命训练,FLE是评估) 我希望我没有把它弄糊涂。你是说: <Grid ToggleButton.Checked="Grid_Checked"> <Grid.RowDefiniti

假设我有一个WPF表格,用于管理叉车(FL)和其他设备员工的培训和评估(使用SQL/LINQ)。我有它的设置,所以当选中培训复选框时,它会使文本框(用于输入日期)和评估复选框变得可见,反之亦然

是否有一种方法可以使我使用一种通用的“选中”方法,根据我点击的培训复选框复制粘贴每件设备

(FLT是生命训练,FLE是评估)


我希望我没有把它弄糊涂。

你是说:

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

已选中专用无效网格(对象发送器,路由目标e)
{
复选框=(复选框)e.Source;
如果(checkbox.Content=“1”)DoSomething();
else DoSomethingElse();
}
更新>>>

今晚没时间帮忙了。。。给你一些提示。。。联机查看
BooleanToVisibilityConverter
,您可以将
复选框绑定。IsChecked
属性直接连接到一个或多个控件的
可见性
属性。。。任何地方都看不到事件处理程序


此外,您还可以使用
网格
对控件进行分组,并在该网格上设置
可见性
属性,使所有控件同时可见或隐藏。我希望这会有所帮助。

您需要将控件的可见性绑定到复选框的选中状态。在代码中不使用MVVM模式或任何支持属性,最简单的实现如下所示

在XAML中,确保您定义了使其工作所需的静态资源(转换器)。您需要为转换器C#代码所在的位置添加名称空间

<Window.Resources>
    <wpfApplication1:BoolToVisibilityConverter x:Key="BoolToVisibility" />
</Window.Resources>
我们需要一个转换器,因为控件的可见性由枚举值(visibility.Whatever)而不是布尔值表示。我们将“IsChecked”的布尔值转换为适当的枚举值并进行设置

在UI中引用转换器以切换可见性。XAML看起来像这样

<StackPanel>
   <CheckBox Name="ShowOrHide" Content="Toggle Me!" />
   <TextBox Visibility="{Binding IsChecked, 
                  ElementName=ShowOrHide,
                  Converter={StaticResource BoolToVisibility}}" />
</StackPanel>


不要在WPF中操作过程代码中的UI元素。为此创建一个合适的视图模型,并将您的逻辑放在那里。@HighCore,在我最谦卑的观点中,您必须时不时地给这些新用户一次休息。尽管我们认为MVVM非常适合WPF,但它不是强制性的。这似乎有点不公平,你总是对新用户咆哮。@HighCore,我完全收回它(至少在这种情况下)。显然,PRX正在“尝试”MVVM。@Sheridan=)。不过,我承认你是对的。我有一种非常不礼貌的方式(这是一个词吗?)来表达我以前没有的东西。我是WinForm/WPF(学生)的新手,所以我以前只见过短语视图模型:X。不过我现在正在研究MVVM:)谢谢,它是简单的标签、复选框和文本框。如果我有10+代表XD,我会发布一张图片。如果这不是你想要的,那么请清楚地解释你在问题中想要什么。通过切换复选框,文本框切换可见性。如果是“培训”复选框,它也会切换标签的可见性和“评估”复选框。我不知道是否有一种方法可以将这些控件“链接”在一起,并且有一种通用的方法来进行培训和评估(其他的复选框、标签和文本框)。或者也许有更好的方法来实现这一点(以前从未用MVVM做过任何事情)。我们不使用MVVM来处理这样的事件。我建议你在尝试之前先仔细阅读一下。谢谢。我还必须添加一些数据,因为我遇到了一个元数据问题(因为项目保存在网络上,所以将其移动到本地修复了它),所以我花了一些时间来弄清楚如何让它工作。在绑定的方式中有没有一种方法可以积极地倾听这些内容,或者我只需要创建自己的侦听器?我不确定你所说的“积极地倾听这些内容”是什么意思。你能详细说明一下吗?抱歉,如果我遗漏了一些明显的东西。不过,在所有的逻辑设置工作中,我忘记了将复选框设置为等于等效的数据库对象值哈哈
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();
    }
}
<StackPanel>
   <CheckBox Name="ShowOrHide" Content="Toggle Me!" />
   <TextBox Visibility="{Binding IsChecked, 
                  ElementName=ShowOrHide,
                  Converter={StaticResource BoolToVisibility}}" />
</StackPanel>