尝试将类添加到Window.Resources中(WPF)

3
我做了完全相同的事情,但仍然出现相同的错误:“在XML命名空间“clr-namespace:WpfApplication1;assembly=WpfApplication1”中不存在标记“CenterToolTipConverter”。第12行第10个位置。”
CenterToolTipConverter.cs
namespace WpfApplication1
{
    public class CenterToolTipConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values.FirstOrDefault(v => v == DependencyProperty.UnsetValue) != null)
            {
                return double.NaN;
            }
            double placementTargetWidth = (double)values[0];
            double toolTipWidth = (double)values[1];
            return (placementTargetWidth / 2.0) - (toolTipWidth / 2.0);
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotSupportedException();
        }
    }
}

MainWindow.xaml

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication1;assembly=WpfApplication1"
    Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <local:CenterToolTipConverter x:Key="myCenterToolTipConverter"/>
    </Window.Resources>
</Window>

我做错了什么?提前感谢您!

MainWindow.xaml 是否在 WpfApplication1 程序集中?如果是,则只需使用 xmlns:local="clr-namespace:WpfApplication1" - clcto
1个回答

1
如果您正在引用相同的程序集,请删除程序集部分。
 xmlns:local="clr-namespace:WpfApplication1"

Or

 xmlns:custom="clr-namespace:WpfApplication1;assembly="

来自Msdn:如果引用的clr-namespace在引用自定义类的应用程序代码所在的同一程序集中定义,则可以省略assembly。或者,对于这种情况的等效语法是指定assembly=,而没有跟随等号的字符串令牌。

我希望这能帮到您。


谢谢,它有效。但现在我有另一个问题。当我在样式资源中引用此方法时,它会显示“无法解析该资源”的消息。 - user3952846
@user3952846 不同的问题意味着你应该提出不同的问题。但是首先要搜索以确保你的问题还没有被回答过。 - clcto
@clcto 感谢您的回复,我在想我应该如何回复这个评论,尽管我不确定新问题是什么。 :) - yo chauhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接