Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF窗口,带有2个网格,使用矩形_C#_Wpf_Combobox - Fatal编程技术网

C# WPF窗口,带有2个网格,使用矩形

C# WPF窗口,带有2个网格,使用矩形,c#,wpf,combobox,C#,Wpf,Combobox,我试着做到以下几点:我有一个WPF窗口,有两个网格。外部网格是我的登录网格,内部包含我的组合框。当程序检查下面的人是否是管理员时,我编写了一个代码。如果没有,只需打开一个新窗口,如果是admin,则会出现一个组合框,您可以在组合框值之间进行选择,因此程序会将您选择的公共窗口删除 <Grid Name="Grid1"> ---Textboxes and Buttons for my Login--- <Grid Name="Grid2" Visibility="Hidden"&

我试着做到以下几点:我有一个WPF窗口,有两个网格。外部网格是我的登录网格,内部包含我的组合框。当程序检查下面的人是否是管理员时,我编写了一个代码。如果没有,只需打开一个新窗口,如果是admin,则会出现一个组合框,您可以在组合框值之间进行选择,因此程序会将您选择的公共窗口删除

<Grid Name="Grid1">
 ---Textboxes and Buttons for my Login---
<Grid Name="Grid2" Visibility="Hidden">
<Canvas Name="CanvaS" Width="200" Height="90">
<ComboBox Width="180" Height="30" Name="CBBox">
<ComboBoxItem Name="Item1">Item1 Instruction
                </ComboBoxItem>
                <ComboBoxItem Name="Item2">Item2 Instruction
                </ComboBoxItem>
<Button Name="Window" Click="Window_Click"/>

</Canvas Width="200"  Height="90">

    </Grid>


</Grid>
因此,我想要以下内容:如果我登录并且用户是管理员,这已经被选中,我的主网格将淡出并尝试使用矩形,但对我不起作用,或者所有按钮都被禁用,画布将弹出,位于网格2中。唯一的问题是,如果我将Grid1设置为Hidden,整个窗口都设置为Hidden,甚至Grid2,如果我将Grid1设置为IsEnabled=False,也不能单击Grid2。那么我该如何解决这个问题呢?或者我应该在代码中的什么地方使用矩形,并且不透明度是多少?
其他一切都在我的代码中工作,我只是无法解决这个问题,这就是为什么我只显示代码的这一部分。

您必须将Grid2从Grid1中取出,因为您不能在禁用的父控件中启用子控件。

首先,您提供的代码中存在一些问题,我认为这段代码不适合您,因为几乎没有缺少/不合适的结束标记

问题是您已将Grid2作为子项添加到grid1中。因此,为Grid1执行的所有操作都将自动影响Grid2。您需要将Grid2从Grid1中取出

见下文

      <Grid Name="MainGrid">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid Name="Grid1" Grid.Row="0">
            </Grid>
            <Grid Name="Grid2" Visibility="Hidden" Grid.Row="1">
                <Canvas Name="CanvaS" Width="200" Height="90">
                    <ComboBox Width="180" Height="30" Name="CBBox">
                        <ComboBoxItem Name="Item1">Item1 Instruction
                        </ComboBoxItem>
                        <ComboBoxItem Name="Item2">Item2 Instruction
                        </ComboBoxItem>
                        <Button Name="Window" Click="Window_Click"/>
                    </ComboBox>
                </Canvas>
            </Grid>
        </Grid>

您确实需要阅读更多关于WPF中布局的内容。如果外部网格被隐藏/禁用,那么内部网格当然也将被隐藏/禁用。您可以尝试再创建一个grid/stackpanel并将这两个网格放在其中,而不是将grid2放在grid1中。这样隐藏/禁用一个不会影响其他人谢谢大家的帮助!解决了!: