我是Silverlight c#devloper,我处于以下快照解释的情况:
正如你所看到我有一个网格(必须使用c#进行prgramtically创建,只有给我选项)。
并且该网格的第一行(始终可见)我有复选框,在检查时将第二个完整行的不透明度设置为0.3,并且在取消选中时将第3个完整行的不透明度设置为0.3(所有三个列)。
我尝试这样做(可能是错误的):(因为它会创建整个childGrid的不透明度,而不仅仅是行,但我想在检查和取消选中checkBox时按行进行不透明度)
Grid childGrid = new Grid();
childGrid.ColumnDefinitions.Add(new ColumnDefinition());
childGrid.ColumnDefinitions.Add(new ColumnDefinition());
childGrid.ColumnDefinitions.Add(new ColumnDefinition());
for (int i = 0; i < totalRows; i++)
{
childGrid.RowDefinitions.Add(new RowDefinition() {
Height = GridLength.Auto
});
}
CheckBox chb = new CheckBox();
chb.Checked += (o, e) =>
{
txtblkShowStatus.Text = param.Parameter[index].Component.Attributes.Showstatus;
TextBlock txt = new TextBlock();
txt.Text = "Hello from second row";
Grid.SetColumn(txt, 1);
Grid.SetRow(txt, 1);
// childGrid.Opacity = 0.3;
childGrid.Children.Add(txt);
};
chb.Unchecked += (o, e) =>
{
txtblkShowStatus.Text = "No";
TextBlock txt = new TextBlock();
txt.Text = "Hello from third row";
Grid.SetColumn(txt, 1);
Grid.SetRow(txt, 2);
// childGrid.Opacity = 0.3;
childGrid.Children.Add(txt);
};
Grid.SetColumn(txtblkShowStatus, 2);
Grid.SetRow(txtblkShowStatus, 0);
childGrid.Children.Add(txtblkShowStatus);
如何实现它?任何代码或逻辑的帮助表示赞赏。 或者你可以解释一下,如果你有相同的逻辑来实现相同的
答案 0 :(得分:1)
你在创建你的txt
孩子的时候(感觉就像80年代的那样!)你可以,而不是创建它们并将它们分配到网格行/列,在他们自己的网格中创建它们跨越父母网格并具有相同的列。然后,您可以更改该行网格的不透明度。
唯一的问题是保持每个行网格列的宽度相同会花费更多的工作,但可以通过将这些列宽度绑定到父网格列宽度的实际宽度来实现。
答案 1 :(得分:1)
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);
这是一个例子。 在这里,我为每两行创建两个新网格,并将相关文本框添加到每一行。然后,网格将添加到子网格中。
然后用户选中复选框,第二行网格将被隐藏,另一个可见,然后取消选中并执行相反的操作。您可以更改不透明度参数。