Xamarin表单-动态更改网格行可见性

时间:2019-03-05 16:46:39

标签: xamarin xamarin.forms grid visibility

我想在给定索引的情况下更改名为“ myGrid”的网格内特定行的可见性。 我首先想到了要使用的特定行:

var row = Grid.GetRow(myGrid.Children[index]);

然后,按如下所示更改“ row”的IsVisible属性:

row.IsVisible = false; 

不幸的是,第二行代码不合法​​...

我不想绑定每一行的“ IsVisible”属性。在我看来,这是不必要的工作。

任何解决此问题的建议将不胜感激!

3 个答案:

答案 0 :(得分:1)

我认为最好的选择是将行中每个控件的IsVisible属性绑定到视图模型中的单个属性。然后,您要做的就是将视图模型属性的值更改为false,整个行将被隐藏。

答案 1 :(得分:0)

原因:   WITH C AS( SELECT ROW_NUMBER() OVER(PARTITION BY mem.memberid,DiagnosisCategoryID ORDER BY md.DiagnosisID ASC) AS ROWNUM, mem.MemberID, mem.FirstName, mem.LastName, md.DiagnosisID, d.diagnosisdescription, dc.DiagnosisCategoryID, dc.CategoryDescription, dc.CategoryScore FROM dbo.member mem LEFT JOIN dbo.Memberdiagnosis md on mem.MemberID = md.MemberID LEFT JOIN Diagnosis d on md.DiagnosisID = d.DiagnosisID LEFT JOIN DiagnosisCategoryMap dcm on d.DiagnosisID = dcm.DiagnosisID LEFT JOIN DiagnosisCategory dc on dc.DiagnosisCategoryID = dcm.DiagnosisCategoryID ),D AS( SELECT min(categoryscore) AS mincat ,MemberID FROM dbo.member mem LEFT JOIN dbo.Memberdiagnosis md on mem.MemberID = md.MemberID LEFT JOIN Diagnosis d on md.DiagnosisID = d.DiagnosisID LEFT JOIN DiagnosisCategoryMap dcm on d.DiagnosisID = dcm.DiagnosisID LEFT JOIN DiagnosisCategory dc on dc.DiagnosisCategoryID = dcm.DiagnosisCategoryID GROUP BY MemberID ) SELECT C.MemberID, C.FirstName, C.LastName, C.DiagnosisID AS MostSevereDiagnosis, C.diagnosisdescription, C.DiagnosisCategoryID, C.CategoryDescription, C.CategoryScore, CASE WHEN D.mincat = C.CategoryScore THEN 1 ELSE 0 END AS IsMostSevereCategory FROM C LEFT JOIN D ON (C.MemberID = D.MemberID) WHERE ROWNUM = 1 返回一个int值。因此,您无法设置GetRow之类的属性

解决方案:

如果要隐藏特定行,可以将rowHeight设置为IsVisible

0

答案 2 :(得分:-1)

正如其他人所说,您正在尝试更改索引的可见性(肯定是错误的)。

您无法获取网格的行并设置其可见性。相反,您应该在行内设置视图的可见性。

但是您应该注意,如果您为该行高度指定了固定的高度甚至星形尺寸,那么这样做可能会在Grid中看到一个空白空间。

最好将行高设置为自动。这样,当该行内的视图不可见时,该行的高度将减小为0。