WPF:无法识别或无法从XAML访问整数CLR属性

Mic*_*ael 5 c# wpf clr xaml dependency-properties

我在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; }
}
Run Code Online (Sandbox Code Playgroud)

我使用普通的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>
Run Code Online (Sandbox Code Playgroud)

有三件事,我想知道:

  • 为什么Intellisense会向我提供XAML中的属性,如果它们不可访问?

  • 如果我关闭所有XAML窗口,重建项目,错误就会消失.

  • 即使可以在没有任何错误的情况下构建项目,也不会设置属性.

答案| 答案| 答案| 答案| 答案| 答案| 回答

感谢所有答案,但解决方案/错误在我的代码中.设置这两个CLR属性后,我忘了更新我的网格.非常遗憾.

但这里有一些你可能想知道的事实:

  • 您可以在WPF XAML中使用和设置纯CLR属性.我检查了它,属性是从XAML设置的
  • 错误"无法识别或无法访问"似乎是一个VS错误,因为该项目是可构建的
  • 如果关闭VS中的XAML文件,将不再存在构建错误

对我来说,使用普通CLR属性是此时的最佳解决方案,因为传递给控件的值是针对控件的每个实例进行硬编码的,并且它们在运行时不会更改.当然,我想使用附加的DP,如果值在运行时更改,他们不会.

感谢您的快速解答,但最终这是我的错.