[英]how to fix unworked xmlns?
在一个 .NET MAUI 项目中,我做了一个 class 并且我想在 XAML 文件中使用它,所以我添加了一个xmlns
但是这个命名空间无法访问 class。
我正在尝试通过此命名空间访问 class:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:HossamTest1.behaviorsfolder"
x:Class="HossamTest1.BehaviorPage"
Title="BehaviorPage">
<StackLayout>
<Entry local:NumericBehaviorValidation/>
<!-- here it gives an error-->
</StackLayout>
</ContentPage>
在这里,我试图将自定义行为添加到条目中,但问题在命名空间的所有类的所有其他项目中重复出现,所有类都是公共的,我更新了我的 visual studio 本身,但问题仍然存在,c# 代码是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HossamTest1.behaviorsfolder
{
public static class NumericBehaviorValidation
{
public static readonly BindableProperty NumricValidationProperty =
BindableProperty.CreateAttached("NumricValidation",typeof(bool),typeof(NumericBehaviorValidation),false,propertyChanged:OnValidation );
public static bool getNumricValidationProperty(BindableObject view)
{
return (bool)view.GetValue(NumricValidationProperty);
}
public static void setNumricValidationProperty(BindableObject view,bool value)
{
view.SetValue(NumricValidationProperty,value);
}
public static void OnValidation(BindableObject view, object oldvalue,object newvalue)
{
Entry entry=view as Entry;
if (entry == null)
{
return;
}
bool valid = (bool)newvalue;
if (valid)
{entry.TextChanged+= OnValidationHandler;
}
else
{
entry.TextChanged -= OnValidationHandler;
}
}
static void OnValidationHandler(object sender, TextChangedEventArgs e)
{
Entry entry=sender as Entry;
double result;
bool isvalid=double.TryParse(e.NewTextValue, out result);
entry.TextColor=isvalid?Colors.Green:Colors.Red;
}
}
}
然后我做了一个空白的新项目来测试这个问题
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:HOSSAM1"
x:Class="HOSSAM1.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Label
Text="Hello, World!"
SemanticProperties.HeadingLevel="Level1"
FontSize="32"
HorizontalOptions="Center"
local:Behavoirs/>
</VerticalStackLayout>
</ScrollView>
</ContentPage>
class Behavior is an empty public class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HOSSAM1
{
public class Behaviors
{
}
}
第一个项目的错误信息是
错误 XLS0415 在类型“NumericBehaviorValidation”中找不到可附加属性“NumricValidation”。 HossamTest1 D:\hossam\backup2\HossamTest1\HossamTest1\BehaviorPage.xaml 12
问题是我在冒号和命名空间名称之间留了一个空格
<Entry local: NumericBehaviorValidation/>
它应该是
<Entry local:NumericBehaviorValidation/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.