WPF 资源、模板、Blend、Style

Resources

每个UI元素都具有Resources属性。
为资源字典贴上用于检索的索引。


  
    
      hello this is String 
    
  
  
  

或直接指定一个外部文件


在方法中也能获取资源

String myString = this.FindResource("myString") as String;

或者已知Resources所属的元素(此处为Window所以直接this)

String myString = this.Resources["myString"] as String;
DynamicResource 动态方式使用资源

图片资源



...
myImage.Source = new BitmapImage( new Uri(@"Resource/0.jpg",UriKind.Relative));
myImage.Source = new BitmapImage( new Uri(@"pack://application:,,,/Resource/0.jpg",UriKind.Absolute));

UserControl

自定义的用户控件,可以直接在同一解决方案中使用


模板

ControlTemplate 与 Blend

决定控件外观,每个UI控件本身也是一个UI元素树

创建某UI控件的自定义副本
  • 通过FindName方法可以查找ControlTemplate

    
        
            hello
        
        
          
            
            
          
        
    


...
TextBox tb = uc.Template.FindName("tb1",uc) as TextBox;
StackPanel sp = tb.Parent as StackPanel;
(sp.Children[1] as TextBox).Text = "change cTmp2";
DataTemplate

决定数据外观
通过DataType为DataTemplate设置应用的数据类型


    
    
        
            
            
        
    
    
        
            
        
    
    
        
        
        
    



DataTemplate既能控制数据又能控制UI,

  • 通过FindName方法可以查找UI内容(同ControlTemplate)
  • 通过正常方法可直接找到数据内容

Style

通过Style设置应用的元素,若不设x:Key只设TargetType则所有该类型均获得,设置Style="{x:Null}"可禁用所有


     

Setter 设置成员的静态外观
Trigger 设置成员行为风格

...

  • MultiTrigger设置多个条件同时满足时才触发

此外还有DataTriggerMultiDataTrigger,由数据是否满足条件来驱动,EventTrigger由事件(鼠标、键盘或自定义)触发

你可能感兴趣的:(WPF 资源、模板、Blend、Style)