尝试在 C# Avalonia UI 项目中使用 System.Windows DependencyProperty (windowsbase.dll) 实现类并失败

问题描述 投票:0回答:0

我正在使用最新版本的 Avalonia UI,我需要将 ComboBox 的下拉内容调整到最宽的成员。所以我找到了this解决方案并且我正在尝试实施它。参考代码如下:

public static class ComboBoxWidthFromItemsBehavior
{
    public static readonly DependencyProperty ComboBoxWidthFromItemsProperty =
        DependencyProperty.RegisterAttached
        (
            "ComboBoxWidthFromItems",
            typeof(bool),
            typeof(ComboBoxWidthFromItemsBehavior),
            new UIPropertyMetadata(false, OnComboBoxWidthFromItemsPropertyChanged)
        );
    public static bool GetComboBoxWidthFromItems(DependencyObject obj)
    {
        return (bool)obj.GetValue(ComboBoxWidthFromItemsProperty);
    }
    public static void SetComboBoxWidthFromItems(DependencyObject obj, bool value)
    {
        obj.SetValue(ComboBoxWidthFromItemsProperty, value);
    }
    private static void OnComboBoxWidthFromItemsPropertyChanged(DependencyObject dpo,
                                                                DependencyPropertyChangedEventArgs e)
    {
        ComboBox comboBox = dpo as ComboBox;
        if (comboBox != null)
        {
            if ((bool)e.NewValue == true)
            {
                comboBox.Loaded += OnComboBoxLoaded;
            }
            else
            {
                comboBox.Loaded -= OnComboBoxLoaded;
            }
        }
    }
    private static void OnComboBoxLoaded(object sender, RoutedEventArgs e)
    {
        ComboBox comboBox = sender as ComboBox;
        Action action = () => { comboBox.SetWidthFromItems(); };
        comboBox.Dispatcher.BeginInvoke(action, DispatcherPriority.ContextIdle);
    }
}

不幸的是,当我创建课程时,VS2022 告诉我

The type or namespace name 'DependencyProperty' could not be found.

查了一下,DependencyProperty在

System.Windows
命名空间下,程序集是
WindowsBase.dll
.

所以我把

using System.Windows;
加到班级的最前面,但这并没有解决问题。我在这里阅读了其他几个解决方案,他们指示添加
windowsbase.dll
作为装配参考。

事情是,根据我的解决方案,它已经被引用(我认为):

路径是

C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.4\ref\net7.0\WindowsBase.dll
.

它出现在我的解决方案的依赖关系中

Frameworks > Microsoft.NETCore.App

那么我怎样才能让 VS2022 停止抱怨找不到命名空间

DependencyProperty
DependencyObject

任何帮助将不胜感激。

c# .net-assembly avaloniaui
© www.soinside.com 2019 - 2024. All rights reserved.