我有一个简单的XAML:
<CheckBox x:Name="chkShowGrid" IsThreeState="False" IsChecked="False">Show content</CheckBox>
<Grid Visibility="{Binding IsChecked, ElementName=chkShowGrid}">
<TextBlock>Some content goes here</TextBlock>
</Grid>
此XAML在WinRT Windows 8.1应用程序中运行良好。当我在WP8.1应用程序中尝试它时,它在设计器中工作(显示或隐藏网格取决于复选框值),但不在手机上。为什么呢?
更新: 我有通用的8.1应用程序,如果使用转换器然后显示异常:
错误CS0012:类型“类型”是在未组装的程序集中定义的 引用。您必须添加对程序集'System.Runtime的引用, Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'
转换器代码:
class BoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value == null) return false;
return (bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
在XAML中
<Page.Resources>
<local:BoolConverter x:Name="ThatsMyConverter"/>
</Page.Resources>
........
<Grid Visibility="{Binding IsChecked, ElementName=chkShowSettings,Converter={StaticResource ThatsMyConverter}}">
答案 0 :(得分:1)
您的转换器返回一个布尔值,并且您尝试将一个bool分配给Visibility,它只能将Visible或Collapsed视为可能的值。尝试从转换器返回Visibility而不是bool。这应该工作。例如,在您的转换器中:
{{1}}