using System.Windows; using System.Windows.Controls; namespace SHH.CameraDashboard { /// /// CameraItemTop.xaml 的交互逻辑 /// public partial class CameraItemTop : UserControl { // 持有 ViewModel 的实例 private CameraItemTopViewModel _viewModel; public CameraItemTop() { InitializeComponent(); // 1. 初始化 ViewModel _viewModel = new CameraItemTopViewModel(); // 2. 设置 DataContext,这样 XAML 里的 {Binding Name} 就能找到 VM 里的属性 this.DataContext = _viewModel; } // ============================================================ // 定义依赖属性 (DependencyProperty) - 这是接收绑定的关键 // ============================================================ // 注册一个名为 "DataSource" 的依赖属性 public static readonly DependencyProperty DataSourceProperty = DependencyProperty.Register( nameof(DataSource), // 属性名 typeof(WebApiCameraModel), // 属性类型 typeof(CameraItemTop), // 所属类型 new PropertyMetadata(null, OnDataSourceChanged)); // 回调函数 // 这是一个普通的包装属性,方便代码访问 public WebApiCameraModel DataSource { get => (WebApiCameraModel)GetValue(DataSourceProperty); set => SetValue(DataSourceProperty, value); } // 当外部绑定的数据发生变化时(比如用户在左侧列表点选了新项) private static void OnDataSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var control = d as CameraItemTop; if (control != null && control._viewModel != null) { // 【核心逻辑】将外部传进来的数据,转发给 ViewModel control._viewModel.Camera = e.NewValue as WebApiCameraModel; } } } }