我在WPF中有自定义控件。我添加了两个普通的CLR属性,如下所示:
private int _ChordFrom = 0;
public int ChordFrom
{
get { return _ChordFrom; }
set { _ChordFrom = value; }
}
private int _ChordTo = 0;
public int ChordTo
{
get { return _ChordTo; }
set { _ChordTo = value; }
}
我使用普通的CLR属性,因为我不想将这些属性绑定到任何其他依赖项。我只是想在实例化控件时在XAML中设置值。
在XAML内部,属性是由intellisense找到的,但在构建项目时我收到错误:
“会员”ChordFrom“无法识别或无法访问。” “会员”ChordTo“无法识别或无法访问。”
XAML代码如下所示:
<TabItem Header="CHORDS I">
<Grid x:Name="_gridChords_1" Background="AliceBlue">
<mg:MidiChordGrid x:Name="gridMidiChordGrid_1" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ChordFrom="0" ChordTo="7"/>
</Grid>
</TabItem>
有三件事,我想知道:
为什么Intellisense会向我提供XAML中的属性if 他们无法访问?
如果我关闭所有XAML窗口,重建项目,错误 消失。
即使可以构建项目而没有任何错误,属性也是如此 没有设定。
答案|答案|答案|答案|答案|答案| ANSWER
感谢所有答案,但解决方案/错误在我的代码中。设置这两个CLR属性后,我忘了更新我的网格。对不起。
但这里有一些你可能想知道的事实:
对我来说,使用普通CLR属性是此时的最佳解决方案,因为我传递给控件的值是针对控件的每个实例进行硬编码的,并且它们在运行时不会更改。当然,我想使用附加的DP,如果值在运行时更改,则不会。
感谢您的快速解答,但最终这是我的错。
答案 0 :(得分:2)
我只是确认这似乎是问题中提到的视觉工作室错误。 我向控件添加了几个属性,花了一个小时试图找出它不会构建的原因。阅读上面的帖子后,我只需关闭xaml文件,点击构建并成功构建。 使用VS 2013社区sp 4。