2015-06-16 1 views
1

Я работаю над Windows Phone 8.1 projet, и у меня в настоящее время возникают проблемы с использованием моего BooleanToVisibility Converter.Как избавиться от ошибки пространства имен в xaml WP8.1

namespace

Вот сам конвертер:

public class BooleanToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     if (!(value is bool)) 
      return Visibility.Collapsed; 
     bool objValue = (bool)value; 
     if (objValue) 
     { 
      return Visibility.Visible; 
     } 
     return Visibility.Collapsed; 

    } 
    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Вот мой Xaml:

<Page 
x:Class="CityBox.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:views="using:CityBox.Views" 
xmlns:converters="using:CityBox.Converters" 
mc:Ignorable="d" 
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" 
DataContext="{Binding Main, Source={StaticResource Locator}}" 
x:Name="MyMainPage"> 

<Page.Resources> 
    <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
</Page.Resources> 


<Grid> 
    <views:DataLoadingView x:Name="DataLoadingView" 
          Visibility="{Binding LoadingViewVisibility, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
    <views:DrawerView x:Name="DrawerView" 
         Visibility="{Binding DrawerViewVisibility, Converter={StaticResource BooleanToVisibilityConverter}}" /> 
</Grid> 
</Page> 

И, наконец мои булевы из моего ViewModel:

private bool _loadingViewVisibility; 
    private bool _drawerViewVisibility; 

    public bool LoadingViewVisibility 
    { 
     get { return _loadingViewVisibility;} 
     set 
     { 
      _loadingViewVisibility = value; 
      RaisePropertyChanged("LoadingViewVisibility"); 
     } 
    } 
    public bool DrawerViewVisibility 
    { 
     get { return _drawerViewVisibility; } 
     set 
     { 
      _drawerViewVisibility = value; 
      RaisePropertyChanged("DrawerViewVisibility"); 
     } 
    } 

O я не понимаю, и я думаю, что проблема может возникнуть из-за того, что в Ресурсе (в xaml) у меня есть какое-то предупреждение, говорящее мне, что «BooleanToVisibilityConverter» не находится в указанном пространстве имен, что является странным, потому что это автоматически добавляется resharper. Я думал, что это просто ошибка от VS, как это случается иногда, но она не работает, когда я изменяю значения своих bools.

Надеюсь, я был достаточно точен, чтобы вы мне помогли! заранее, Guillaume.

xaml error

EDIT: Я только что провел несколько тестов, и вот что-то интересное:

<Grid> 
    <!--<TextBlock Text="Test1" Visibility="{Binding Test2, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
    <TextBlock Text="Test2" Visibility="{Binding Test1, Converter={StaticResource BooleanToVisibilityConverter}}"/>--> 
    <views:LoadingView Visibility="{Binding Test2, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
     <views:DrawerView Visibility="{Binding Test1, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
</Grid> 

Если я раскомментировать два TextBlocks и комментарии мои две точки зрения, то он работает. Если я делаю это иначе, это не так. в каждом из этих представлений в простой поместите текстовый блок с надписью «Загрузка» и «Ящик». в случае, когда я раскомментирую два представления и попытаюсь скрыть их, установив bool в false, эти два вида видны на экране. Что не происходит, если я делаю это с двумя текстовыми полями !!

+0

преобразователей изменения в преобразователи –

+0

я до сих пор ту же ошибку, даже после этого изменения – bottus

ответ

1

Измените свой XML в:

<Page 
x:Class="CityBox.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:views="using:CityBox.Views" 
mc:Ignorable="d" 
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" 
DataContext="{Binding Main, Source={StaticResource Locator}}" 
x:Name="MyMainPage"> 

<Page.Resources> 
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
</Page.Resources> 

<Grid> 
<views:DataLoadingView x:Name="DataLoadingView" 
         Visibility="{Binding LoadingViewVisibility, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
<views:DrawerView x:Name="DrawerView" 
        Visibility="{Binding DrawerViewVisibility, Converter={StaticResource BooleanToVisibilityConverter}}" /> 

+0

Если я не поставил «конвертер:» тогда я получаю реальная ошибка от визуальной студии на статическом ресурсе, говорящей «Недопустимый ресурс: ожидаемый IValueConverter» – bottus

+0

У меня нет wp8. но в wpf, если я поместил 'xmlns: converters =" clr-namespace: CityBox.Converters "и скомпилировал его, проблема исчезнет. @ bottus –

+0

Пробовал ваше решение, и я получаю тот же результат, что и выше, реальная ошибка компиляции – bottus

Смежные вопросы