我们可以在组合框的SelectionChanged事件中在同一网格位置渲染两个UI元素。
确切的问题是我有网格和网格内部有两行,第一行总是会在选择时向我显示一个ComboBox(我之前谈论过的是line) 不同的项目将在网格的第二行中的相同位置呈现不同的UI元素。
所以我尝试在Combo的SelectionChanged事件中渲染UI元素。
但问题发生在我选择第一个元素然后它正确显示但是当我尝试选择第二个UI元素在Combo选择更改时在相同位置呈现时它会发出警告 “该值不在预期范围内。”在线:“bigGrid.Children.Add(ck);”
我的代码是:
Grid childGrid = createChildGrid();
Grid ck = new Grid(); //This ck will contain ComboBox at row zero and UI element at second row
ck.RowDefinitions.Add(new RowDefinition());
ck.RowDefinitions.Add(new RowDefinition());
int loopCount = 0; //This variable will help in changing the row index
if (loopCount == 0)
{
ComboBox cmb = new ComboBox();
//Here i add items in Combo:
foreach(string ccyp in attributeName)
{
if (ccyp != null)
cmb.Items.Add(ccyp);
}
cmb.SelectionChanged += (o, e) =>
{
txtblkName.Text = cmb.SelectedValue.ToString();
ck = generateUIElementCorrespondingTotxtLabelNameObtainedOnComboSelection(txtblkName.Text); //this function will return a grid containing the selected UI elemnt from combo box.
Grid.SetRow(ck, loopCount);
bigGrid.Children.Add(ck); //**THIS LINE GIVE EXCEPTION: "the value is not within the expected range."**
};
}
Grid.SetColumn(cmb, 1);
childGrid.Children.Add(cmb);
Grid.SetRow(childGrid, loopCount);
bigGrid.Children.Add(childGrid);
loopCount++;// I incrtease loop count so that on selection changed event of combo UI will be displayed on second row loopcount=1
编辑:在调试时我得到:断点的结果是:loopcount=1
(用于渲染第二行中的组合项)此“Grid.SetRow(ck, loopCount); bigGrid.Children.Add(ck);
”和组合框显示loopcount= 0
(我的意思是:“{{1}}”)
答案 0 :(得分:1)
来自问题Silverlight: Value does not fall within the expected range exception
'当有两个元素添加相同名称时,可能会导致此错误。什么标识符添加到组合框?
如果这是问题,如链接问题所示,您可以为每个组合框添加唯一标识符。