自定义依赖属性未显示在 Intellisense 中

瑞克

Dependency Property在后面的代码中创建了以下自定义这个依赖属性的类型infragistics XamDataGrid等等。我正在尝试通过此属性获取网格的引用。

以下代码编译时没有错误或警告。但是,Dependency Property没有显示在XAML intelliSense.

我也试过输入全名。它没有识别这个 DP。我已经清理了项目并重建了它。我什至关闭了 Visual Studio 并重新打开了它。

using System.Windows;
using Infragistics.Windows.DataPresenter;

namespace Demo
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        public static readonly DependencyProperty DPRProperty = 
            DependencyProperty.Register(
                            "DPR", 
                            typeof(XamDataGrid), 
                            typeof(MainWindow), 
                            new FrameworkPropertyMetadata(null));

        public XamDataGrid DPR
        {
            get { return (XamDataGrid)GetValue(DPRProperty); }
            set { SetValue(DPRProperty, value); }
        }

    }
}
X39

问题是您希望依赖属性出现在您的基类 XAML“代码”中

但是,您没有为Window但是为MainWindow

如果你会使用一个<MainWindow />标签,它会出现

如果您可以解释您尝试存档的内容,则可能会进一步帮助您

编辑

我想我现在明白你的目标是什么了

要获得对任何对象的引用,您不需要 DP,而是必须正确排序所有内容

需要的东西:

  • 窗户(显然)
  • 数据上下文
  • 一些代码隐藏
  • 附加财产

附加属性看起来很像这样

public class Initialized
{
    public static DependencyProperty CommandProperty =
        DependencyProperty.RegisterAttached("Command",
        typeof(ICommand),
        typeof(Initialized),
        new UIPropertyMetadata(CommandChanged));

    public static DependencyProperty CommandParameterProperty =
        DependencyProperty.RegisterAttached("CommandParameter",
                                            typeof(object),
                                            typeof(Initialized),
                                            new UIPropertyMetadata(null));

    public static void SetCommand(DependencyObject target, ICommand value)
    {
        target.SetValue(CommandProperty, value);
    }

    public static void SetCommandParameter(DependencyObject target, object value)
    {
        target.SetValue(CommandParameterProperty, value);
    }
    public static object GetCommandParameter(DependencyObject target)
    {
        return target.GetValue(CommandParameterProperty);
    }

    private static void CommandChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
    {
        var type = target.GetType();
        var ev = type.GetEvent("Initialized");
        var method = typeof(Initialized).GetMethod("OnInitialized");

        if ((e.NewValue != null) && (e.OldValue == null))
        {
            ev.AddEventHandler(target, Delegate.CreateDelegate(ev.EventHandlerType, method));
        }
        else if ((e.NewValue == null) && (e.OldValue != null))
        {
            ev.RemoveEventHandler(target, Delegate.CreateDelegate(ev.EventHandlerType, method));
        }
    }

    public static void OnInitialized(object sender, EventArgs e)
    {
        var control = sender as FrameworkElement;
        var command = (ICommand)control.GetValue(CommandProperty);
        var commandParameter = control.GetValue(CommandParameterProperty);
        command.Execute(commandParameter);
    }
}

在您的 DataContext(让它命名MainWindowDataContext)中,创建一个新ICommand属性(让它命名CmdInitialized),将传递给命令的参数放入您的实例变量中

然后,在您的 XAML 代码中,您只需像往常一样使用 AttachedProperty

 <!-- `ev:` is the XAML namespace the Initialized class is located in -->
 ev:Initialized.Command="{Binding CmdInitialized}"
 ev:Initialized.CommandParameter="{Binding RelativeSource={RelativeSource Self}}"

然而,重要的部分是:在组件初始化之前,DataContext 需要已经附加到窗口中

这意味着您必须将窗口代码编辑为如下所示:

public MainWindow()
{
    this.DataContext = new MainWindowDataContext();
    InitializeComponent();
}

之后,你应该没事

如果您需要 ICommand 的解决方案,请RelayCommand在 google 上搜索 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在自定义配置中添加Intellisense

来自分类Dev

ReSharper-如何在IntelliSense中显示自定义代码段

来自分类Dev

自定义属性未显示在Active Model Serializer中

来自分类Dev

在Intellisense注释中显示空行

来自分类Dev

由自定义代码定义/定义的Microsoft Visual Studio对象中的Javascript Intellisense

来自分类Dev

在Intellisense中显示事件处理程序

来自分类Dev

如何使Visual Studio Intellisense显示javascript回调中的属性?

来自分类Dev

自定义通知未显示在Android中

来自分类Dev

自定义图标未显示在铁图标中

来自分类Dev

自定义模块未显示在应用列表中

来自分类Dev

iOS 8中的自定义字体未显示

来自分类Dev

IE中未显示自定义符号字体

来自分类Dev

分类链接未显示在自定义管理菜单中

来自分类Dev

自定义表盘未显示在Android Wear应用中

来自分类Dev

FXCop自定义规则未显示在RuleSet中

来自分类Dev

UIButton中的自定义UIBarButtonItem的标题未显示

来自分类Dev

自定义字体未显示在我的网页中

来自分类Dev

自定义组件中的Angular preSelected选项未显示

来自分类Dev

在“自定义列表视图”实施中按钮未显示

来自分类Dev

自定义UserControl未显示在ListBox中

来自分类Dev

地图自定义注释未显示在设备中

来自分类Dev

自定义通知未显示在Android中

来自分类Dev

自定义UINavigationController中的UIBarButtonItem未显示

来自分类Dev

iOS 8中的自定义字体未显示

来自分类Dev

IE中未显示自定义符号字体

来自分类Dev

自定义表盘未显示在Android Wear应用中

来自分类Dev

自定义帖子未显示在存档页面中

来自分类Dev

POST 数据未显示在自定义路由的参数中

来自分类Dev

使来自react-intl的FormattedMessage中的ID继承自自定义TypeScript接口以启用VS IntelliSense和类型检查

Related 相关文章

  1. 1

    在自定义配置中添加Intellisense

  2. 2

    ReSharper-如何在IntelliSense中显示自定义代码段

  3. 3

    自定义属性未显示在Active Model Serializer中

  4. 4

    在Intellisense注释中显示空行

  5. 5

    由自定义代码定义/定义的Microsoft Visual Studio对象中的Javascript Intellisense

  6. 6

    在Intellisense中显示事件处理程序

  7. 7

    如何使Visual Studio Intellisense显示javascript回调中的属性?

  8. 8

    自定义通知未显示在Android中

  9. 9

    自定义图标未显示在铁图标中

  10. 10

    自定义模块未显示在应用列表中

  11. 11

    iOS 8中的自定义字体未显示

  12. 12

    IE中未显示自定义符号字体

  13. 13

    分类链接未显示在自定义管理菜单中

  14. 14

    自定义表盘未显示在Android Wear应用中

  15. 15

    FXCop自定义规则未显示在RuleSet中

  16. 16

    UIButton中的自定义UIBarButtonItem的标题未显示

  17. 17

    自定义字体未显示在我的网页中

  18. 18

    自定义组件中的Angular preSelected选项未显示

  19. 19

    在“自定义列表视图”实施中按钮未显示

  20. 20

    自定义UserControl未显示在ListBox中

  21. 21

    地图自定义注释未显示在设备中

  22. 22

    自定义通知未显示在Android中

  23. 23

    自定义UINavigationController中的UIBarButtonItem未显示

  24. 24

    iOS 8中的自定义字体未显示

  25. 25

    IE中未显示自定义符号字体

  26. 26

    自定义表盘未显示在Android Wear应用中

  27. 27

    自定义帖子未显示在存档页面中

  28. 28

    POST 数据未显示在自定义路由的参数中

  29. 29

    使来自react-intl的FormattedMessage中的ID继承自自定义TypeScript接口以启用VS IntelliSense和类型检查

热门标签

归档