WPF:将字符串转换为System.Windows.Visibility

时间:2017-03-15 13:27:15

标签: c# wpf visual-studio-2013

目前我正在使用数据库,而且我站在一个小问题前面。我有一个应用程序,在这个应用程序中,每个用户都可以设置不需要的应用程序的某些部分"隐形"这样它们就不再显示了。 我为数据库中的每个用户保存此信息,以便应用程序可以直接采用用户上次使用它时设置的任何更改或设置。在该数据库中,visibility-property保存为字符串。 例如,我在我的数据库中保存了以下变量:

string str = Convert.ToString(System.Windows.Visibility.Visible);

现在我再次启动我的应用并读取该变量,该变量应代表名为" grid"的网格的可见性属性。并设置此属性我想做的事情是这样的:

SqlDataReader reader = sqlCommand.ExecuteReader();

while (reader.Read())
{
grid.Visibility = reader.GetString(1);
}

不幸的是,我得到了错误:无法隐式转换类型' string'到System.Windows.Visibility 有没有人知道替代解决方案或将字符串转换为可见性的可能性?

希望我很清楚我想做什么,并提前感谢任何建议

3 个答案:

答案 0 :(得分:4)

System.Windows.Visibility是枚举,Enum有Parse方法从字符串中获取值。 Parse返回object值,需要显式强制转换:

grid.Visibility = (System.Windows.Visibility)
 Enum.Parse(typeof(System.Windows.Visibility), reader.GetString(1));

答案 1 :(得分:0)

为什么你不使用条件?

if(reader.GetString(1).Equals("Visible")) {
   grid.Visibility = Visibility.Visible;
} else {
   grid.Visibility = Visibility.Collapsed;
}

答案 2 :(得分:0)

最快的方法是grid.Visibility = System.Windows.Visibility.Hidden;