[英]controlling multiple grids visibility
我有一个WPF应用程序。 它包含许多网格。 我正在使用(尝试使用)MVVM模式。
因此,在我的视图模型中,我具有System.Windows.Visibility属性,可以控制网格是可见的还是折叠的。 这一切都很好。
但是说我有50个网格。 我只希望一次可见。 因此,可以说启动时的应用程序显示grid1。 然后,用户单击一个按钮,这意味着grid2现在应该可见,并且grid1应该折叠。
我可以用下面的代码来做到这一点,尽管我感觉这是一个糟糕的方法,因为它不是很可扩展
void GridSelector(string gridName)
{
if(gridName == "grid1")
{
Grid1 = Visibility.Visible;
Grid2 = Visibility.Collapsed;
Grid3 = Visibility.Collapsed;
...
Grid50 = Visibility.Collapsed;
}
else if(gridName == "grid2")
{
Grid1 = Visibility.Collapsed;
Grid2 = Visibility.Visible;
Grid3 = Visibility.Collapsed;
...
Grid50 = Visibility.Collapsed;
}
...
}
有什么更好的方法? 这是我应该使用反射的地方吗?
您可以使用将所选网格ID转换为可见性的转换器,如下所示:
public class GridIdToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return value.ToString() == parameter.ToString() ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
并将其应用于您的网格
<Grid Visibility="{Binding SelectedGridId, Converter={StaticResource GridIdToVisibilityConverter}, ConverterParameter=grid1}/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.