我正在使用最新版本的 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
?
任何帮助将不胜感激。