繁体   English   中英

XAML设计器无法识别其他控件属性(VS 2015)

[英]XAML designer can't recognize other control properties (VS 2015)

我最近安装了Visual Studio 2015社区,并且有一个最初在Visual Studio 2010中开发的大型WPF项目,然后在Visual Studio 2012 Ultimate中继续进行。 问题是在这个项目中,我有一些控件,其属性设置如下:

    private string _Header = "";
    public string TextHeader
    {
        get { return _Header; }
        set
        {
            _Header = value;
            if (_Header == string.Empty)
            {
                lTitle.Visibility = Visibility.Hidden;
                iSeparator.Visibility = Visibility.Hidden;
            }
            else
            {
                lTitle.Content = _Header;
                lTitle.Visibility = Visibility.Visible;
                iSeparator.Visibility = Visibility.Visible;
            }
        }
    }

我在VS 2012的XAML设计器中没有问题,现在,在此版本的Visual Studio(2015)中,我无法使用该设计器,它引发错误“ 无法识别或无法访问成员” TextHeader“ ”。

我没有调试问题,应用程序运行时没有问题,没有异常,使用这些属性的控件也没有问题,我认为这是XAML设计器的问题。

在此处输入图片说明

我的项目Framework版本是3.5,目标平台是x64。

您要通过XAML设置的属性应首先注册。 因此,在您的情况下,代码应为:

public static readonly DependencyProperty TextHeaderProperty = DependencyProperty.Register("TextHeader", typeof(string), typeof(StyledPanel))

public string TextHeader
{
    get { return (string)GetValue(TextHeaderProperty); }
    set { SetValue(TextHeaderProperty, value); }
}

文章解释DependencyProperties非常好。

请注意,进行此更改后,应重新构建应用程序。

编辑

打回来:

    public static readonly DependencyProperty TextHeaderProperty = DependencyProperty.Register(
        "TextHeader", 
        typeof(string), 
        typeof(StyledPanel), 
        new PropertyMetadata(TextHeaderPropertyChanged));

    private static void TextHeaderPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
        var instance = sender as StyledPanel;
        if (String.IsNullOrEmpty(instance.TextHeader))
        {
            instance.lTitle.Visibility = Visibility.Hidden;
            instance.iSeparator.Visibility = Visibility.Hidden;
        }
        else
        {
            instance.lTitle.Content = _Header;
            instance.lTitle.Visibility = Visibility.Visible;
            instance.iSeparator.Visibility = Visibility.Visible;
        }
    }

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM