局部 `DataContext`

为了确保的新 ViewModel 不会影响现有绑定到 `MainViewModel` 的其他属性,可以使用 `MonitorPage` 作为 `UserControl` 的局部 `DataContext`,而不覆盖整个 `UserControl` 的 `DataContext`。可以通过在 XAML 中的某个局部范围内(如包含时间显示的 `TextBlock`)设置局部 `DataContext` 来实现。

具体步骤如下:

1. **不要在整个 `UserControl` 设置 `DataContext`**,而是在需要显示时间的 `TextBlock` 上设置局部 `DataContext`。
2. **保留原有的 `DataContext`**,这样其他绑定会继续使用 `MainViewModel`。

### 修改后的 XAML

在包含时间显示的 `TextBlock` 上设置局部 `DataContext`,如下所示:

```xml
<UserControl x:Class="Zhaoxi.DigitaPlatform.Views.Pages.MonitorPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Zhaoxi.DigitaPlatform.Views.Pages"
             xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
             xmlns:zxc="clr-namespace:Zhaoxi.DigitaPlatform.Components;assembly=Zhaoxi.DigitaPlatform.Components"
             xmlns:c="clr-namespace:Zhaoxi.DigitaPlatform.Common.Converter;assembly=Zhaoxi.DigitaPlatform.Common"
             xmlns:sys="clr-namespace:System;assembly=mscorlib"
             mc:Ignorable="d" 
             d:DesignHeight="750" d:DesignWidth="1300">

    <UserControl.Resources>
        <!-- Your existing resources -->
    </UserControl.Resources>
    
    <!-- Your existing layout -->
    <Grid Margin="80,10,10,10">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="250"/>
            <ColumnDefinition/>
            <ColumnDefinition Width="250"/>
        </Grid.ColumnDefinitions>

        <!-- 第一列 -->
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="90"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <!-- 第一块 -->
            <Border CornerRadius="6">
                <Border.Background>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                        <GradientStop Color="#1116a1ff" Offset="0"/>
                        <GradientStop Color="Transparent" Offset="1"/>
                    </LinearGradientBrush>
                </Border.Background>
            </Border>
            <Grid VerticalAlignment="Top" Margin="0,10">
                <!-- Your existing layout -->
            </Grid>
            
            <!-- 在这里设置局部 DataContext -->
            <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,15"
                       Foreground="#555" Name="txt_time">
                <TextBlock.DataContext>
                    <local:MonitorPageViewModel />
                </TextBlock.DataContext>
                <Run Text="{Binding CurrentTime, Mode=OneWay, StringFormat='HH:mm:ss'}" FontFamily="{StaticResource DigitalDisplay}" FontSize="30"/>
                <Run Text="   "/>
                <Run Text="{Binding CurrentTime, Mode=OneWay, StringFormat='dddd', ConverterCulture=zh-CN}" FontSize="13"/>
            </TextBlock>
            
            <!-- Other elements -->
        </Grid>
        <!-- Other columns -->
    </Grid>
</UserControl>
```

### ViewModel 实现

保持 `MonitorPageViewModel` 和之前一样:

```csharp
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Threading;

public class MonitorPageViewModel : INotifyPropertyChanged
{
    private DateTime _currentTime;
    private DispatcherTimer _timer;

    public MonitorPageViewModel()
    {
        _currentTime = DateTime.Now;
        _timer = new DispatcherTimer();
        _timer.Interval = TimeSpan.FromSeconds(1);
        _timer.Tick += (s, e) => CurrentTime = DateTime.Now;
        _timer.Start();
    }

    public DateTime CurrentTime
    {
        get => _currentTime;
        set
        {
            _currentTime = value;
            OnPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged([CallerMemberName] string name = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    }
}
```

### 总结

通过上述方法,可以仅在需要的 `TextBlock` 上设置局部 `DataContext`,这样不会影响 `UserControl` 的全局 `DataContext`,并且可以保留原本绑定到 `MainViewModel` 的其他属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ATL新能源科技薪资待遇及Verify测评语言理解数字推理题型简介

一、走进ATL新能源科技 ATL新能源公司&#xff0c;即东莞新能源科技有限公司&#xff0c;是全球领先的可充式锂离子电池研发、生产和营销企业。成立于2004年&#xff0c;总部位于香港&#xff0c;产品广泛应用于消费电子产品和电动汽车领域。ATL以其技术创新和与苹果等大客户的…

Java中的Monad设计模式及其实现

Java中的Monad设计模式及其实现 在函数式编程中&#xff0c;Monad是一种重要的设计模式&#xff0c;用于处理包含隐含计算信息&#xff08;如计算顺序、环境、状态、错误处理等&#xff09;的计算。Monad提供了一种结构&#xff0c;使得可以将计算链式连接起来&#xff0c;每一…

2024年【电工(初级)】考试内容及电工(初级)模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;初级&#xff09;考试内容参考答案及电工&#xff08;初级&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及电工&#xff08;初级&#xff09;操作证已考过的学员汇总&#xff0c;相对有…

等保2.0安全计算环境解读

等保2.0&#xff0c;即网络安全等级保护2.0制度&#xff0c;是中国为了适应信息技术的快速发展和安全威胁的新变化而推出的网络安全保护标准。相较于等保1.0&#xff0c;等保2.0更加强调主动防御、动态防御和全面审计&#xff0c;旨在实现对各类信息系统的全面保护。 安全计算环…

如何使用PHP和swoole进行大规模的网络爬虫开发?

如何使用php和swoole进行大规模的网络爬虫开发&#xff1f; 引言&#xff1a; 随着互联网的迅速发展&#xff0c;大数据已经成为当今社会的重要资源之一。为了获取这些宝贵的数据&#xff0c;网络爬虫应运而生。网络爬虫可以自动化地访问互联网上的各种网站&#xff0c;并从中…

Docker基础知识的掌握,相关基本命令的用法

安装docker步骤&#xff1a;https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBkShcucLZbrn2d 1.docker Docker 是一种容器化平台&#xff0c;用于帮助开发者打包、发布和管理应用程序及其依赖关系。通过 Docker&#xff0c;开发者可以将应用程序及其所有依赖项打包到一个称为…

『MySQL 实战 45 讲』22 - MySQL 有哪些“饮鸩止渴”提高性能的方法?

MySQL 有哪些“饮鸩止渴”提高性能的方法&#xff1f; 需求&#xff1a;业务高峰期&#xff0c;生产环境的 MySQL 压力太大&#xff0c;没法正常响应&#xff0c;需要短期内、临时性地提升一些性能 短连接风暴 短连接模式&#xff1a;执行很少的 SQL 语句就断开&#xff0c;…

uniapp加载打点点效果

uniapp加载打点点效果 背景实现思路代码实现尾巴 背景 为了增加系统的交互性&#xff0c;我们在加载数据时通常会增加一些loading动效&#xff0c;但是在某些场景下只需要一些简单文字提醒。比如说使用【加载中】或者【loading】等字段&#xff0c;但是写静态的字符又显得交互…

【若依前后端分离】前端vue页面查看服务器本地的PDF

后端实现&#xff1a; 使用FileSystemResource包装文件&#xff0c;以便Spring MVC可以处理该资源 创建HttpHeaders对象以设置响应头 设置Content-Disposition头&#xff0c;使得浏览器以内联方式显示PDF&#xff08;即在浏览器中直接打开&#xff09; 设置Content-Type为appli…

Thinger.io 支持多协议、插件化100%开源 IoT 企业级物联网平台

项目源码&#xff0c;文末联系小编 Thinger.io 是一个开源插件化物联网平台&#xff0c;提供了设备原型、扩展和设备连接管理所需的一切工具。我们的目标是使物联网的使用民主化&#xff0c;使其可供全世界使用&#xff0c;并简化大型物联网项目的开发。 01 Thinger.io 物联网平…

Python学习路线图:120天系统学习,你也能成大神!

学Python&#xff0c;切忌今天这学一点&#xff0c;明天那里学一点&#xff0c;零零散散没有系统的学习。这样不仅耽搁大家时间&#xff0c;久而久之也会消磨大家学习的兴致&#xff01;这里给大家总结了一张系统的Python学习路线图&#xff01;希望大家共勉&#xff01; Pyth…

期末考试结束,成绩如何快速发布?

随着期末考试的落幕&#xff0c;老师们又迎来了一项繁琐的任务将成绩单私信给学生家长。这项工作耗时耗力&#xff0c;而且极易出错&#xff0c;期末老师的工作已经足够繁重还要私发成绩&#xff0c;简直是雪上加霜。 好消息是&#xff0c;现在有了易查分小程序&#xff0c;只需…

学会整理电脑,基于小白用户(无关硬件升级)

如果你不想进行硬件升级&#xff0c;就要学会进行整理维护电脑 基于小白用户&#xff0c;每一个操作点我都会在后续整理出流程&#xff0c;软件推荐会选择占用小且实用的软件 主要从三个角度去讨论【如果有新的内容我会随时修改&#xff0c;也希望有补充告诉我&#xff0c;我…

【Linux详解】进程地址空间

目录 研究背景 验证地址空间 实验一&#xff1a;父子进程变量地址一致性 实验二&#xff1a;变量值修改后父子进程的差异 分析与结论 实验三&#xff1a;进程地址空间验证 理解进程地址空间 区域与页表 写时拷贝机制 进程地址空间的意义 文章手稿&#xff1a; xmind…

基于语音识别的智能电子病历(二)苹果端的语音接入

是2011年参与的&#xff0c;俺负责Wav文件处理、FTP通讯和一些后端部分。iPhone/iPad/iPod Recorder 前2年还在APP Store上 说明 Step-by-Step Procedure to Install App and Use the FnetRecorder Download the App from Apple Store Launch Apple Store and key in “fnetr…

深入理解LibTorch:从安装到API详解

摘要&#xff1a; 本文将详细介绍LibTorch的安装步骤和主要API的使用方法&#xff0c;帮助开发者快速上手并利用LibTorch进行深度学习应用开发。 正文&#xff1a; 一、LibTorch开发背景与优势 PyTorch是一个灵活且功能强大的深度学习框架&#xff0c;它的动态计算图特性使…

golang中空值判断函数,支持任意类型的空值判断

使用反射方式对any任意类型的数据是否为空判断, 可判断时间对象是否为空, 可判断所有数字类型,指针类型和结构体字符串是否为空 判断规则: bool类型因为只有true和false 所以 全部视为非空 nil 类型全部视为空 所有数字类型的 零值全部视为空 对应指针类型数据,只要是非ni…

labview排错

源代码正常跑&#xff0c;应用程序报这个错&#xff0c;是因为源代码的可以找到项目路径内所有dll的路径&#xff0c;而应用程序只能找到data文件夹的dll文件 解决查看源代码中.net的程序集的路径&#xff0c;复制对应的dll到data文件夹下 在执行developinterface.dll出现labv…

学习java第一百一十三天

Spring框架的好处&#xff1f; 轻量级&#xff1a;Spring框架是轻量级的&#xff0c;最基础的版本大约只有2MB。 控制反转&#xff08;IOC&#xff09;&#xff1a;通过控制反转技术&#xff0c;实现了解耦合。对象给出它们的依赖&#xff0c;而不是创建或查找依赖的对象。 …

雅思词汇及发音积累 2024.6.28

住宿 Student Accommodation Centre 学生住宿管中心 Student Accommodation Officer 学生住宿员 roommate/flatmate/dormmate/housemate 室友 housing coordinator /kəʊˈɔːdɪneɪtə(r)/ 住宿协调员 newspaper advertisement 报纸广告 landlord /ˈlndlɔːd/ 男房东 re…