<Grid TextBlock.Foreground="White" TextBlock.FontSize="30">
     <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="125,146,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
     <TextBlock Height="23" HorizontalAlignment="Left" Margin="256,207,0,0" Name="textBlock1" Text="TextBlock" VerticalAlignment="Top" />
   </Grid>
在Grid的TextBlock.Foreground="White",写成Button.Foreground为什么会报错:
未在类型“Button”中找到可附加的属性“Foreground”。难道说TextBlock.Foreground是附加属性吗?到底是附加属性还是属性值继承呢?

解决方案 »

  1.   

    就是按钮没有Foreground属性。就好像猴子有尾巴,人没有尾巴一样
      

  2.   

    <Button Content="Button" Height="23" Foreground="xxxxxx"/>
    直接写Foreground 没有Button.Foreground
      

  3.   

    此处对于TextBlock 而言,解释为附加属性呢,还是属性值的继承呢?
      

  4.   

    还是不明白,为什么就没有Button.Foreground写法呢,其它元素呢,可以这样写吗
      

  5.   

    所谓附加属性只是语法糖,它不是属性,而是方法。在TextBlock类型,代码是这样的        public static void SetForeground(DependencyObject element, Brush value)
            {
                if (element == null)
                {
                    throw new ArgumentNullException("element");
                }
                element.SetValue(TextBlock.ForegroundProperty, value);
            }
      

  6.   

    很显然,如果编译器在Button类中找不到叫做 SetForeground 的公共静态方法,它就会报告你说:找不到 Foreground 这个附加属性。
      

  7.   

    可能一开始不习惯,但是有经验的人应该在12个小时内就充分明白其作用。这种语法糖非常有用。我们希望让交互界面设计师、尽量不写代码、尽量使用Blend等等美工板绘图工具来开发程序,因此我们需要在xaml的风格上直接调用各种各样过去只有程序员才能调用的代码。现在许多代码都是被声明方式——作为属性——而调用的,包括大量的SetXXXXX、GetXXXXX公共方法,包括事件、包括行为和动画等等,都是不需要写一行代码就可以轻松调用的。目标是,假设不需要写代码即可开发,就一定不写代码。
      

  8.   

    但,在MSDN中查看TextBlock,并没有看到Foreground附件属性哦
      

  9.   

    那你的意思是,此处是附加属性吗?
    但,在MSDN中查看TextBlock,并没有看到Foreground附件属性哦
      

  10.   

    这是msdn的解释:This dependency property also has an attached property usage.(http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.foreground.aspx)但是里面提到一般情况不会这么使用。但是如果坚持使用,应该将这个属性运用在TextBlock所包含的子控件上,用来设置子控件的Foreground。
      

  11.   

    你肯定没自己看MSDN,这里写的很清楚,这是TextBlock对应的附加属性
    http://msdn.microsoft.com/ZH-CN/library/vstudio/system.windows.controls.textblock.setforeground(v=vs.110).aspx
    同理,你去找Button的静态方法,找不到一个叫SetForeground的静态方法,这里不是看是否存在Foreground属性,而是看是否存在SetForeground的静态方法。请注意上面说的格式,这是强行规定,没有通融的余地。