Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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#:如何设置同一网格中特定行的不透明度_C#_.net_Silverlight_Checkbox_Grid - Fatal编程技术网

c#:如何设置同一网格中特定行的不透明度

c#:如何设置同一网格中特定行的不透明度,c#,.net,silverlight,checkbox,grid,C#,.net,Silverlight,Checkbox,Grid,我是silverlight c#devloper,我的处境如下所示: 正如您所见,我有一个网格(必须使用c#来创建,这是我唯一的选择) 网格的第一行(总是可见的)我有一个复选框,选中它会将第二整行的不透明度设置为0.3,取消选中它会将第三整行的不透明度设置为0.3(所有三列) 我这样做的尝试(可能是错误的):(因为它将创建整个childGrid的不透明度,不仅仅是行,而且我希望在复选框的选中和取消选中时按行显示不透明度) Grid-childGrid=new-Grid(); 添加(新的Colu

我是silverlight c#devloper,我的处境如下所示:

正如您所见,我有一个网格(必须使用c#来创建,这是我唯一的选择)

网格的第一行(总是可见的)我有一个复选框,选中它会将第二整行的不透明度设置为0.3,取消选中它会将第三整行的不透明度设置为0.3(所有三列)

我这样做的尝试(可能是错误的):(因为它将创建整个childGrid的不透明度,不仅仅是行,而且我希望在复选框的选中和取消选中时按行显示不透明度)

Grid-childGrid=new-Grid();
添加(新的ColumnDefinition());
添加(新的ColumnDefinition());
添加(新的ColumnDefinition());
对于(int i=0;i
{
txtblkShowStatus.Text=param.Parameter[index].Component.Attributes.Showstatus;
TextBlock txt=新的TextBlock();
txt.Text=“第二行的您好”;
Grid.SetColumn(txt,1);
Grid.SetRow(txt,1);
//不透明度=0.3;
childGrid.Children.Add(txt);
};
chb.未选中+=(o,e)=>
{
txtblkShowStatus.Text=“否”;
TextBlock txt=新的TextBlock();
txt.Text=“第三行的您好”;
Grid.SetColumn(txt,1);
Grid.SetRow(txt,2);
//不透明度=0.3;
childGrid.Children.Add(txt);
};
Grid.SetColumn(txtblkShowStatus,2);
Grid.SetRow(txtblkShowStatus,0);
childGrid.Children.Add(txtblkShowStatus);

如何实现它有什么想法?任何需要帮助的代码或逻辑都将不胜感激或者请您解释一下,您是否有其他逻辑来实现相同的

在哪里创建您的
txt
子项(感觉又像是80年代了!)您可以在自己的网格中创建它们,而不是创建它们并将它们分配给网格行/列,它们跨越父网格并具有相同的列。然后可以更改该行栅格的不透明度

唯一的问题是保持每一行网格列的宽度不变需要更多的工作,但可以通过将这些列的宽度绑定到父网格列宽度的实际宽度来实现。

grid childGrid=new grid();
    Grid childGrid = new Grid();

    Grid Grdrow1 = new Grid();
    Grid Grdrow2 = new Grid();            

    childGrid.ColumnDefinitions.Add(new ColumnDefinition());
    childGrid.ColumnDefinitions.Add(new ColumnDefinition());
    childGrid.ColumnDefinitions.Add(new ColumnDefinition());
    for (int i = 0; i < 3; i++)
    {
        childGrid.RowDefinitions.Add(new RowDefinition()
        {
            Height = GridLength.Auto
        });
    }
    CheckBox chb = new CheckBox();
    chb.Content = "Checkbox";
    chb.Checked += (o, e) =>
    {
        TextBlock txt = new TextBlock();
        txt.Text = "Hello from second row";
        Grid.SetColumn(Grdrow1, 1);
        Grid.SetRow(Grdrow1, 1);
        Grdrow1.Children.Add(txt);


        Grdrow2.Opacity = 0;
        Grdrow1.Opacity = 1;


        childGrid.Children.Add(Grdrow1);
    };
    chb.Unchecked += (o, e) =>
    {
        TextBlock txt = new TextBlock();
        txt.Text = "Hello from third row";
        Grid.SetColumn(Grdrow2, 1);
        Grid.SetRow(Grdrow2, 2);
        Grdrow2.Children.Add(txt);


        Grdrow2.Opacity = 1;
        Grdrow1.Opacity = 0;


        childGrid.Children.Add(Grdrow2);
    };

    childGrid.Children.Add(chb);
    LayoutRoot.Children.Add(childGrid);
网格Grdrow1=新网格(); Grdrow2=新网格(); 添加(新的ColumnDefinition()); 添加(新的ColumnDefinition()); 添加(新的ColumnDefinition()); 对于(int i=0;i<3;i++) { 添加(新的行定义() { 高度=网格长度。自动 }); } 复选框chb=新复选框(); chb.Content=“复选框”; chb.已检查+=(o,e)=> { TextBlock txt=新的TextBlock(); txt.Text=“第二行的您好”; 网格设置列(Grdrow1,1); 网格设置行(Grdrow1,1); Grdrow1.Children.Add(txt); Grdrow2.不透明度=0; Grdrow1.不透明度=1; childGrid.Children.Add(Grdrow1); }; chb.未选中+=(o,e)=> { TextBlock txt=新的TextBlock(); txt.Text=“第三行的您好”; 网格设置列(Grdrow2,1); Grdrow2,2; Grdrow2.Children.Add(txt); Grdrow2.不透明度=1; Grdrow1.不透明度=0; childGrid.Children.Add(Grdrow2); }; childGrid.Children.Add(chb); LayoutRoot.Children.Add(childGrid);
这是一个例子。 在这里,我为每两行创建两个新网格,并将相关文本框添加到每一行。然后,网格将添加到子网格


然后用户选中复选框,第二行网格将隐藏,另一行网格可见,然后取消选中并执行相反的操作。您可以更改不透明度参数。

另一个选项是使用白色(或与窗口背景匹配的任何颜色)矩形来模拟它,该矩形横跨您的列。当你想让东西不那么显眼时,你就增加了矩形的不透明度
    Grid childGrid = new Grid();

    Grid Grdrow1 = new Grid();
    Grid Grdrow2 = new Grid();            

    childGrid.ColumnDefinitions.Add(new ColumnDefinition());
    childGrid.ColumnDefinitions.Add(new ColumnDefinition());
    childGrid.ColumnDefinitions.Add(new ColumnDefinition());
    for (int i = 0; i < 3; i++)
    {
        childGrid.RowDefinitions.Add(new RowDefinition()
        {
            Height = GridLength.Auto
        });
    }
    CheckBox chb = new CheckBox();
    chb.Content = "Checkbox";
    chb.Checked += (o, e) =>
    {
        TextBlock txt = new TextBlock();
        txt.Text = "Hello from second row";
        Grid.SetColumn(Grdrow1, 1);
        Grid.SetRow(Grdrow1, 1);
        Grdrow1.Children.Add(txt);


        Grdrow2.Opacity = 0;
        Grdrow1.Opacity = 1;


        childGrid.Children.Add(Grdrow1);
    };
    chb.Unchecked += (o, e) =>
    {
        TextBlock txt = new TextBlock();
        txt.Text = "Hello from third row";
        Grid.SetColumn(Grdrow2, 1);
        Grid.SetRow(Grdrow2, 2);
        Grdrow2.Children.Add(txt);


        Grdrow2.Opacity = 1;
        Grdrow1.Opacity = 0;


        childGrid.Children.Add(Grdrow2);
    };

    childGrid.Children.Add(chb);
    LayoutRoot.Children.Add(childGrid);