WPF计划尺度学习记载19

打印 上一主题 下一主题

主题 1892|帖子 1892|积分 5676

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. public class Sentence : ObservableObject
  2. {
  3.     private string content;
  4.     public string Content
  5.     {
  6.         get { return content; }
  7.         set { content = value; RaisePropertyChanged(); }
  8.     }
  9. }
复制代码

  1. public class MainViewModel : ObservableObject
  2. {
  3.     private ObservableCollection<Sentence> poetries = new ObservableCollection<Sentence>();
  4.     public ObservableCollection<Sentence> Poetries
  5.     {
  6.         get { return poetries; }
  7.         set { poetries = value; RaisePropertyChanged(); }
  8.     }
  9.     public MainViewModel()
  10.     {
  11.         Poetries.Add(new Sentence() { Content = "汉皇重色思倾国,御宇多年求不得。" });
  12.         Poetries.Add(new Sentence() { Content = "杨家有女初长成,养在深闺人未识。" });
  13.         Poetries.Add(new Sentence() { Content = "天生丽质难自弃,一朝选在君王侧。" });
  14.         Poetries.Add(new Sentence() { Content = "回眸一笑百媚生,六宫粉黛无颜色。" });
  15.         Poetries.Add(new Sentence() { Content = "春寒赐浴华清池,温泉水滑洗凝脂。" });
  16.         Poetries.Add(new Sentence() { Content = "侍儿扶起娇无力,始是新承恩泽时。" });
  17.         Poetries.Add(new Sentence() { Content = "云鬓花颜金步摇,芙蓉帐暖度春宵。" });
  18.     }
  19. }
复制代码
  1. // 视图模型基类继承(实现INotifyPropertyChanged接口)
  2. public class MainViewModel : ObservableObject
  3. {
  4.     // 诗句集合存储字段(使用ObservableCollection实现动态UI更新)
  5.     private ObservableCollection<Sentence> poetries = new ObservableCollection<Sentence>();
  6.    
  7.     /// <summary>
  8.     /// 诗歌集合属性(双向绑定到UI列表控件)
  9.     /// 技术特性:
  10.     /// 1. 动态集合变更通知(自动触发UI重绘)
  11.     /// 2. 线程安全操作(通过BindingOperations.EnableCollectionSynchronization)
  12.     /// </summary>
  13.     public ObservableCollection<Sentence> Poetries
  14.     {
  15.         get { return poetries; }
  16.         // 属性变更时自动通知视图层(触发RaisePropertyChanged事件)
  17.         set { poetries = value; RaisePropertyChanged(); }
  18.     }
  19.     /// <summary>
  20.     /// 视图模型构造函数(数据初始化)
  21.     /// 最佳实践建议:
  22.     /// 1. 大数据量时应采用异步加载(async/await模式)
  23.     /// 2. 生产环境建议从数据库/API获取数据
  24.     /// </summary>
  25.     public MainViewModel()
  26.     {
  27.         // 初始化《长恨歌》诗句(白居易代表作,共7句示例)
  28.         Poetries.Add(new Sentence() { Content = "汉皇重色思倾国,御宇多年求不得。" });  // 开篇点明主题
  29.         Poetries.Add(new Sentence() { Content = "杨家有女初长成,养在深闺人未识。" });  // 杨玉环出场铺垫
  30.         Poetries.Add(new Sentence() { Content = "天生丽质难自弃,一朝选在君王侧。" });  // 命运转折点描写
  31.         Poetries.Add(new Sentence() { Content = "回眸一笑百媚生,六宫粉黛无颜色。" });  // 经典容貌描写手法
  32.         Poetries.Add(new Sentence() { Content = "春寒赐浴华清池,温泉水滑洗凝脂。" });  // 奢华宫廷生活场景
  33.         Poetries.Add(new Sentence() { Content = "侍儿扶起娇无力,始是新承恩泽时。" });  // 含蓄的情感表达
  34.         Poetries.Add(new Sentence() { Content = "云鬓花颜金步摇,芙蓉帐暖度春宵。" });  // 服饰与场景的意象组合
  35.     }
  36. }
复制代码
  1. <Grid>
  2.      <Border  
  3.              BorderBrush="#DFDFDF"
  4.              BorderThickness="1"
  5.              CornerRadius="5"
  6.              Margin="10">
  7.          <ListBox ItemsSource="{Binding Poetries}" >
  8.              <ListBox.ItemTemplate>
  9.                  <DataTemplate>
  10.                      <Border>
  11.                          <TextBlock Text="{Binding Content}"
  12.                                     FontSize="14"
  13.                                     Margin="10 5 10 5"/>
  14.                      </Border>
  15.                  </DataTemplate>
  16.              </ListBox.ItemTemplate>
  17.              <ListBox.Style>
  18.                  <Style TargetType="ListBox">
  19.                      <Setter Property="Focusable" Value="False"/>
  20.                      <Setter Property="Padding" Value="0"/>
  21.                      <Setter Property="Margin" Value="0"/>
  22.                      <Setter Property="Background" Value="Transparent"/>
  23.                      <Setter Property="BorderBrush" Value="Transparent"/>
  24.                      <Setter Property="ItemContainerStyle">
  25.                          <Setter.Value>
  26.                              <Style TargetType="ListBoxItem">
  27.                                  <Setter Property="Height" Value="40"/>
  28.                                  <Setter Property="Template">
  29.                        
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表