CheckBox绑定到WP8.1中的元素问题

时间:2016-05-15 07:36:34

标签: xaml windows-phone-8.1

我有一个简单的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}}">

1 个答案:

答案 0 :(得分:1)

您的转换器返回一个布尔值,并且您尝试将一个bool分配给Visibility,它只能将Visible或Collapsed视为可能的值。尝试从转换器返回Visibility而不是bool。这应该工作。例如,在您的转换器中:

{{1}}