[英]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.