Я работаю над Windows Phone 8.1 projet, и у меня в настоящее время возникают проблемы с использованием моего BooleanToVisibility Converter.Как избавиться от ошибки пространства имен в xaml WP8.1
Вот сам конвертер:
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.
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, эти два вида видны на экране. Что не происходит, если я делаю это с двумя текстовыми полями !!
преобразователей изменения в преобразователи –
я до сих пор ту же ошибку, даже после этого изменения – bottus