我最近安装了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)中,我无法使用设计器,它会抛出错误" 可以& #39;识别或无法访问该成员" TextHeader" "。
我没有调试问题,应用程序在没有问题的情况下运行,没有异常,并且在使用这些属性的控件中没有问题,我认为这是XAML设计器的问题。
我的项目框架版本是3.5,目标平台是x64。
答案 0 :(得分:1)
首先要注册要通过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); }
}
This文章很好地解释了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;
}
}
希望,这有帮助