[英]How to get rid of the namespace error in xaml WP8.1
我正在使用Windows Phone 8.1投影機,並且當前在使用BooleanToVisibility Converter時遇到問題。
這是轉換器本身:
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");
}
}
我不明白的一件事是問題可能來自資源(在xaml中),我有某種警告告訴我“ BooleanToVisibilityConverter”不在指定的命名空間中,這很奇怪,因為它由reshaper自動添加。 我以為這只是VS的一個錯誤,有時會發生,但是當我更改布爾值時它不起作用。
希望我足夠精確,能為您提供幫助! 預先感謝,紀堯姆。
編輯:我只是運行了一些測試,這是有趣的事情:
<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>
如果我取消注釋這兩個文本塊並注釋我的兩個視圖,那么它將起作用。 如果我以其他方式這樣做,它不會。 在每個視圖中,簡單地放置一個Textblock,上面寫着“ Loading”和“ Drawer”。 在我取消注釋兩個視圖並嘗試通過將bool設置為false來隱藏一個視圖的情況下,這兩個視圖在屏幕上可見。 如果我用兩個文本框來做,那不會發生!
將您的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}}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.