[英]XAML adding namespace for converters class
我一直都在“名稱xxx在yyy中不存在”。 我不明白為什么,我想我嘗試了所有可能的組合。
我所有的cs文件(包括主窗口)都在“ Web_Media_Seeker_WPF”命名空間中
Converters.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace Web_Media_Seeker_WPF.WPFConverters
{
public class BoolToValueConverter<T> : IValueConverter
{
public T FalseValue { get; set; }
public T TrueValue { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return FalseValue;
else
return (bool)value ? TrueValue : FalseValue;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value != null ? value.Equals(TrueValue) : false;
}
}
public class BoolToObjectConverter : BoolToValueConverter<Object> { }
public class BoolToStringConverter : BoolToValueConverter<String> { }
public class BoolToBrushConverter : BoolToValueConverter<System.Windows.Media.Brush> { }
public class BoolToVisibilityConverter : BoolToValueConverter<System.Windows.Visibility> { }
public class BoolToColorConverter : BoolToValueConverter<System.Windows.Media.Color> { }
public class BoolToImageSourceConverter : BoolToValueConverter<System.Windows.Media.ImageSource> { }
public class BootToBoolConverter : BoolToValueConverter<bool> { }
public class AddValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
object result = value;
int Value;
if (value != null && targetType == typeof(Int32) &&
int.TryParse((string)parameter,
System.Globalization.NumberStyles.Integer, culture, out Value))
{
result = (int)value + (int)Value;
}
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
MainWindow.xaml
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namesapce:Web_Media_Seeker_WPF.WPFConverters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="Web_Media_Seeker_WPF.MainWindow"
Title="Web Media Seeker"
Height="563"
Width="836">
<Window.Resources>
<local:BoolToImageSourceConverter x:Key="BoolToWorkImageSource"
TrueValue="Images/work.png"
FalseValue="Images/idle.png" />
<local:BootToBoolConverter x:Key="InvertBool"
TrueValue="False"
FalseValue="True" />
<local:BoolToStringConverter x:Key="WorkTooltip"
TrueValue="Working..."
FalseValue="Idle" />
</Window.Resources>
and stuff...
我有錯誤:
名稱空間“ clr-namesapce:Web_Media_Seeker_WPF.WPFValuesConverters”中不存在名稱“ BoolToImageSourceConverter”。
名稱空間“ clr-namesapce:Web_Media_Seeker_WPF.WPFValuesConverters”中不存在名稱“ BoolToStringConverter”。
名稱空間“ clr-namesapce:Web_Media_Seeker_WPF.WPFValuesConverters”中不存在名稱“ BootToBoolConverter”。
XML名稱空間“ clr-namesapce:Web_Media_Seeker_WPF.WPFValuesConverters”中不存在標簽“ BoolToImageSourceConverter”。
找不到類型“ local:BoolToImageSourceConverter”。 驗證您沒有丟失程序集引用,並且所有引用的程序集均已構建。
找不到類型'local:BoolToStringConverter'。 驗證您沒有丟失程序集引用,並且所有引用的程序集均已構建。
找不到類型'local:BootToBoolConverter'。 驗證您沒有丟失程序集引用,並且所有引用的程序集均已構建。
您的命名空間聲明中有一個錯誤:
xmlns:local="clr-namesapce:Web_Media_Seeker_WPF.WPFConverters"
應該
xmlns:local="clr-namespace:Web_Media_Seeker_WPF.WPFConverters"
你把namesapce
而不是namespace
我有這個問題,沒有錯字。 問題不僅僅在於XAML,或者至少不是完全。 最初的開發人員使用與代碼隱藏類名稱相同的名稱來命名Window標記,現在似乎已經禁止了。 這是XAML的唯一問題。 其他所有事情都與WPF和Windows.System.Data庫中的重疊有關,這些重疊導致IValueConverter(位於System.Windows.Data命名空間中)無法識別。 我首先通過對象瀏覽器搜索了所有具有IValueConverter接口的庫。 其中有兩個在我的項目中,一個是事后才想到的,因為我認為我需要它來替換我刪除的WPF工具包3.5的元素。 我刪除了我認為我可以做不到的那個,這消除了問題。 這有點像“模棱兩可的參考”錯誤,但並非以這種方式出現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.