王柳 发表于 2025-4-9 04:16:47

WPF计划尺度学习记载19

public class Sentence : ObservableObject
{
    private string content;
    public string Content
    {
      get { return content; }
      set { content = value; RaisePropertyChanged(); }
    }
}
public class MainViewModel : ObservableObject
{

    private ObservableCollection<Sentence> poetries = new ObservableCollection<Sentence>();
    public ObservableCollection<Sentence> Poetries
    {
      get { return poetries; }
      set { poetries = value; RaisePropertyChanged(); }
    }

    public MainViewModel()
    {
      Poetries.Add(new Sentence() { Content = "汉皇重色思倾国,御宇多年求不得。" });
      Poetries.Add(new Sentence() { Content = "杨家有女初长成,养在深闺人未识。" });
      Poetries.Add(new Sentence() { Content = "天生丽质难自弃,一朝选在君王侧。" });
      Poetries.Add(new Sentence() { Content = "回眸一笑百媚生,六宫粉黛无颜色。" });
      Poetries.Add(new Sentence() { Content = "春寒赐浴华清池,温泉水滑洗凝脂。" });
      Poetries.Add(new Sentence() { Content = "侍儿扶起娇无力,始是新承恩泽时。" });
      Poetries.Add(new Sentence() { Content = "云鬓花颜金步摇,芙蓉帐暖度春宵。" });
    }
} // 视图模型基类继承(实现INotifyPropertyChanged接口)
public class MainViewModel : ObservableObject
{
    // 诗句集合存储字段(使用ObservableCollection实现动态UI更新)
    private ObservableCollection<Sentence> poetries = new ObservableCollection<Sentence>();
   
    /// <summary>
    /// 诗歌集合属性(双向绑定到UI列表控件)
    /// 技术特性:
    /// 1. 动态集合变更通知(自动触发UI重绘)
    /// 2. 线程安全操作(通过BindingOperations.EnableCollectionSynchronization)
    /// </summary>
    public ObservableCollection<Sentence> Poetries
    {
      get { return poetries; }
      // 属性变更时自动通知视图层(触发RaisePropertyChanged事件)
      set { poetries = value; RaisePropertyChanged(); }
    }

    /// <summary>
    /// 视图模型构造函数(数据初始化)
    /// 最佳实践建议:
    /// 1. 大数据量时应采用异步加载(async/await模式)
    /// 2. 生产环境建议从数据库/API获取数据
    /// </summary>
    public MainViewModel()
    {
      // 初始化《长恨歌》诗句(白居易代表作,共7句示例)
      Poetries.Add(new Sentence() { Content = "汉皇重色思倾国,御宇多年求不得。" });// 开篇点明主题
      Poetries.Add(new Sentence() { Content = "杨家有女初长成,养在深闺人未识。" });// 杨玉环出场铺垫
      Poetries.Add(new Sentence() { Content = "天生丽质难自弃,一朝选在君王侧。" });// 命运转折点描写
      Poetries.Add(new Sentence() { Content = "回眸一笑百媚生,六宫粉黛无颜色。" });// 经典容貌描写手法
      Poetries.Add(new Sentence() { Content = "春寒赐浴华清池,温泉水滑洗凝脂。" });// 奢华宫廷生活场景
      Poetries.Add(new Sentence() { Content = "侍儿扶起娇无力,始是新承恩泽时。" });// 含蓄的情感表达
      Poetries.Add(new Sentence() { Content = "云鬓花颜金步摇,芙蓉帐暖度春宵。" });// 服饰与场景的意象组合
    }
} <Grid>
   <Border
             BorderBrush="#DFDFDF"
             BorderThickness="1"
             CornerRadius="5"
             Margin="10">
         <ListBox ItemsSource="{Binding Poetries}" >
             <ListBox.ItemTemplate>
               <DataTemplate>
                     <Border>
                         <TextBlock Text="{Binding Content}"
                                    FontSize="14"
                                    Margin="10 5 10 5"/>
                     </Border>
               </DataTemplate>
             </ListBox.ItemTemplate>
             <ListBox.Style>
               <Style TargetType="ListBox">
                     <Setter Property="Focusable" Value="False"/>
                     <Setter Property="Padding" Value="0"/>
                     <Setter Property="Margin" Value="0"/>
                     <Setter Property="Background" Value="Transparent"/>
                     <Setter Property="BorderBrush" Value="Transparent"/>
                     <Setter Property="ItemContainerStyle">
                         <Setter.Value>
                           <Style TargetType="ListBoxItem">
                                 <Setter Property="Height" Value="40"/>
                                 <Setter Property="Template">
                     
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: WPF计划尺度学习记载19