我之前在Silerlight版发了一次,但是那里人太少,所以这里再发一次两贴都有分,共100,解决了一起揭帖1. 
<TextBlock Text="{StaticResource MyText}" /> 
跟 
<TextBlock Text="{Binding Source={StaticResource MyText}}" /> 
有什么区别? 
我发现效果是一样的,都能实现我的要求,为什么有两种语法? 2. 
Binding里Source和ElementName有什么区别? 
我知道Source要使用资源里的x:Key,而ElementName要使用x:Name,但是效果是一样的,为什么要设计如此相近的语法? 
还有,Source还可以接受其他未命名的对象,比如Source={Binding {x:Static s:DateTime.Now}},为什么不用Source来取代ElementName的功能?(s为xmlns:s="clr-namespace:System;assembly=mscorlib") 3.XAML能不能定义类型? 
比如我想创建一个: 
class Data 

public string Text{get;set;} 
public int Len{get;set;} 

用XAML怎么来表达? 然后还要创建该类的具体对象 或者创建匿名类型的对象也行,相当于: 
new {Text="aa",Len=2} 主要是为了使程序里一些控件的外观保持一致,但是又不想在cs文件中定义类型,所以要求在XAML中定义类型,或者直接匿名对象更好 4. 
<Button Content="{x:Static s:DateTime.Now}"> </Button> (s为xmlns:s="clr-namespace:System;assembly=mscorlib") 将按钮的显示内容绑定为当前时间,但是不会实时更新,应该怎么办? 5. 如果我定义了一个类 
namespace Name 

class My{} 
} 那么我在xaml中,要使用它,可以: 
xmlns:k="clr-namespace:Name" 但是如果我这个类没有放在命名空间中,怎么在XAML中使用? 注释掉命名空间 
//namespace Name 
//{ 
classs My{} 
//}
http://hi.csdn.net/link.php?url=http://topic.csdn.net%2Fu%2F20091207%2F00%2Fe8385307-6f5a-4bb8-aece-419bc2a73e16.html

解决方案 »

  1.   

    1.StaticResource 是 ResourceDictionary 里的Item
     Binding Source 是object 能一样吗?  用StaticResource就不能Path=xx.xx
    2.Source可以是一个view   ElementName必须是可视化树节点上的
    3.何必为难自己 xaml还是会被编译成.cs
    4.你在winform里或者web设置label.text=dateitme.now.tosorttimestring() 他会自己刷新吗?  不会
    怎么做? winform里怎么做 这里就怎么做
    5.我不认为这样做是合理的, 没有命名空间 即便是在.cs里 你怎么找到这个类?
      

  2.   

    学习 貌似2010 WPF会火起来
      

  3.   

    1楼回答的差不多.....
    我也是用Silverlight的,不过对它的了解还是不多,而且,还在用2.0-_-!
      

  4.   

    1楼的回答的不错。高过段事件WPF 至于WPF/E 没深入了解
      

  5.   

    1.静态资源运行时不会改变,是看不出区别,Binding是WPF/SL中最基本也是最有用的东西,建议好好看看好好理解一下
    3.这个问题没有讨论的意义
    4.首先如果想要界面元素能够实时接收后台属性的更改,该属性必须为依赖属性,或者实现了INotifyPropertyChanged接口,其次必须使用绑定,故在此如果想实现实时时间显示,也许应该在后台定义一个DateTime类型的依赖属性,和界面绑定,通过一个Timer实时刷新,求更好的方法
      

  6.   

    1. 
    <TextBlock Text="{StaticResource MyText}" /> 
    跟 
    <TextBlock Text="{Binding Source={StaticResource MyText}}" /> 
    有什么区别? 
    我发现效果是一样的,都能实现我的要求,为什么有两种语法? 效果一样,本质不同。背后的区别是调用了 FrameworkElement.SetBinding() 还是 DependencyObject.SetValue()2. 
    Binding里Source和 ElementName有什么区别? 
    我知道Source要使用资源里的x:Key,而ElementName要使用x:Name,但是效果是一样的,为什么要设计如此相近的语法? 
    还有,Source还可以接受其他未命名的对象,比如Source={Binding {x:Static s:DateTime.Now}},为什么不用Source来取代ElementName的功能?(s为xmlns:s="clr- namespace:System;assembly=mscorlib") Source是一个Obejct,你只理解为使用资源中的x:Key太狭义了。它可以是你以任何形式传递的值。
    而ElementName属于一个简便语法,但是适用范围相对较窄。
    3.XAML能不能定义类型? 
    比如我想创建一个: 
    class Data 

    public string Text{get;set;} 
    public int Len{get;set;} 

    用XAML怎么来表达? 然后还要创建该类的具体对象 或者创建匿名类型的对象也行,相当于: 
    new {Text="aa",Len=2} 主要是为了使程序里一些控件的外观保持一致,但是又不想在cs文件中定义类型,所以要求在XAML中定义类型,或者直接匿名对象更好 
    不能
    4. 
    <Button Content="{x:Static s:DateTime.Now}"> </Button> (s为 xmlns:s="clr-namespace:System;assembly=mscorlib") 将按钮的显示内容绑定为当前时间,但是不会实时更新,应该怎么办? 
    单从字面上理解都应该知道 x:Static 是不会更新的了。如果要做到这种效果,需要自己写一个类并实现了INotifyPropertyChanged接口,且以Binding的形式绑定到控件上。
    5. 如果我定义了一个类 
    namespace Name 

    class My{} 
    } 那么我在xaml中,要使用它,可以: 
    xmlns:k="clr-namespace:Name" 但是如果我这个类没有放在命名空间中,怎么在XAML中使用? 注释掉命名空间 
    //namespace Name 
    //{ 
    classs My{} 
    //}没办法在 XAML 中引用---------另外,1楼已经做了解答。
    如果楼主你是来讨论问题的,即使你认为1楼的答案不对,也请提出看法,否则一味地UP UP UP,是不是显得有些不礼貌,也不尊重帮助你的朋友?