首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Caliburn Micro中点击背景时,TextBox是否会失去焦点?

在Caliburn Micro中点击背景时,TextBox不会自动失去焦点。Caliburn Micro是一个轻量级的MVVM框架,用于构建WPF、Silverlight和Universal Windows Platform (UWP)应用程序。它提供了一种方便的方式来实现视图和视图模型之间的绑定和交互。

在Caliburn Micro中,要实现点击背景时TextBox失去焦点的功能,可以通过以下步骤来实现:

  1. 在视图中,为背景元素(例如Grid或Panel)添加一个点击事件处理程序。
  2. 在事件处理程序中,使用Caliburn Micro提供的事件聚合器来发布一个自定义事件,表示点击背景。
  3. 在视图模型中,订阅该自定义事件,并在事件处理方法中将TextBox的焦点设置为其他元素,或者使用Caliburn Micro提供的FocusManager来清除TextBox的焦点。

以下是一个示例代码:

在视图中的XAML代码:

代码语言:txt
复制
<Grid x:Name="BackgroundGrid" Background="White" cal:Message.Attach="[Event MouseLeftButtonDown] = [Action BackgroundClicked()]">
    <TextBox x:Name="MyTextBox" />
</Grid>

在视图模型中的C#代码:

代码语言:txt
复制
using Caliburn.Micro;

public class MyViewModel : Screen
{
    private readonly IEventAggregator _eventAggregator;

    public MyViewModel(IEventAggregator eventAggregator)
    {
        _eventAggregator = eventAggregator;
    }

    public void BackgroundClicked()
    {
        _eventAggregator.PublishOnUIThread(new BackgroundClickedEvent());
    }
}

public class BackgroundClickedEvent { }

在App.xaml.cs中注册事件聚合器:

代码语言:txt
复制
using Caliburn.Micro;

public partial class App : Application
{
    private readonly IEventAggregator _eventAggregator = new EventAggregator();

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        var container = new SimpleContainer();
        container.Singleton<IEventAggregator>(_eventAggregator);
        container.Singleton<MyViewModel>();

        var bootstrapper = new Bootstrapper(container);
        bootstrapper.Initialize();
    }
}

这样,在点击背景时,会触发BackgroundClicked方法,你可以在该方法中实现失去焦点的逻辑,例如:

代码语言:txt
复制
public void BackgroundClicked()
{
    MyTextBox.FocusManager.FocusedElement = null;
}

这样,当点击背景时,TextBox将失去焦点。

请注意,以上示例代码中使用了Caliburn Micro的事件聚合器和依赖注入容器,你可以根据自己的项目需求进行调整和扩展。另外,腾讯云提供了一系列云计算相关的产品和服务,你可以根据具体需求选择适合的产品。具体的产品介绍和文档可以在腾讯云官方网站上找到。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • win10 uwp 让焦点点击页面空白处回到textbox

    在网上 有一个大神问我这样的问题:在做UWP的项目,怎么能让焦点点击页面空白处回到textbox? 虽然我的小伙伴认为他这是一个 xy 问题,但是我还是回答他这个问题。...首先需要知道什么是空白处,例如有下面的代码 那么空白就是 Grid ,需要点击他的时候回到 TextBox...,下面的代码我没有跑,可能无法运行 需要让 Grid 可以获得点击,需要给他背景 ..."> 在后天代码添加按下空白地方让 XcjKfqnkor 获得焦点 Grid.AddHandler(PointerPressedEvent,...; } 参见:win10 uwp 获取按钮鼠标左键按下 - 林德熙 UWP开发大坑之—路由事件 - 快乐 就在你的心 的博客 如果是技术问题,建议到 Stackoverflow 提问,csdn

    67810

    WPF框架教程 | 从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器

    之前时间一直使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了。...Caliburn.Micro(https://blog.csdn.net/lzuacm/article/details/78886436)是一个轻量级的WPF框架,简化了WPF的不少用法,推荐做WPF...比如本文将介绍如何使用Caliburn.Micro v3.2开发出一个简单的计算器,里面用到了C#的async异步技术,Caliburn.Micro的Conductor等等~ >>>1.VS创建...WPF项目<<< >>>2.使用NuGet包管理工具为当前项目安装Caliburn.Micro <<< 对于Caliburn.Micro 1.x和2.x版,只能使用.dll,需手动给项目加Reference...Caliburn.Micro绑定事件的写法是: cal:Message.Attach="[Event E]=[Action A]" (E是操作,比如Click, MouseDown, KeyDown等等

    4.6K10

    从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器

    从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器 这段时间一直使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了。...Caliburn.Micro是一个轻量级的WPF框架,简化了WPF的不少用法,推荐做WPF开发优先使用。...比如本文将介绍如何使用Caliburn.Micro v3.2开发出一个简单的计算器,里面用到了C#的async异步技术,Caliburn.Micro的Conductor等等~ Step 1: VS...Step 2: 使用NuGet包管理工具为当前项目安装Caliburn.Micro 对于Caliburn.Micro 1.x和2.x版,只能使用.dll,需手动给项目加Reference。...Caliburn.Micro绑定事件的写法是: cal:Message.Attach="[Event E]=[Action A]" (E是操作,比如Click, MouseDown, KeyDown

    1.3K30

    Caliburn.Micro学习笔记(二)----Actions

    上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持...我们还是从做例子开始 demo的源码下载文章的最后 例子1.无参数方法调用 点击button把textBox输入的文本弹出来 如果textbox里没有文本button不可点,看一下效果图 ?...{ MessageBox.Show(str.ToString()+" "+str2); } } 我们说一下上面看到的$source Caliburn.Micro...提供了一些定义好的参数(不区分大小写)供我们传递用 ,当然我们也可以自定义我们自己的参数 $eventArgs — — 将触发器的 EventArgs 或输入的参数传递到您的行动。...这是Caliburn.Micro  Action的源码,默认的是Click和控件的LeftMouseButtonDown事件,有时间你可以详细读一下它的源码 ?

    83890

    C# WPF MVVM开发框架Caliburn.Micro常用功能指南②

    这是Caliburn.Micro项目中最常用的约定和功能的快速指南。 01 事件连接 这会自动将控件上的事件关联到ViewModel上的方法。...这在主/详细场景中非常有用,主/详细场景,ActionMessage可能冒泡到父VM,但需要携带要执行操作的子实例。 $source 触发要发送的ActionMessage的实际框架元素。...这在高级场景很有用。 $this 操作附加到的实际UI元素。在这种情况下,元素本身不会作为参数传递,而是作为其默认属性传递。...长语法 <UserControl x:Class="<em>Caliburn</em>.<em>Micro</em>.CheatSheet.ShellView" xmlns="http://schemas.microsoft.com...myData) { this.MyData = myData; } public string MyData { get; private set; } } 原文标题:<em>Caliburn</em>.<em>Micro</em>

    79920

    C# WPF MVVM开发框架Caliburn.Micro入门介绍①

    当触发器发生,“消息”元素树冒泡,寻找能够调用指定方法的Action.Target(处理程序)。这就是为什么我们称之为信息。动作消息的“冒泡”特性非常强大,非常有用,尤其是主/细节场景。...此外,Caliburn.Micro的动作Blend中有充分的设计支持。...以代码为中心的开发人员很高兴知道Caliburn.Micro支持非常简洁的语法,通过一个名为Message.Attach的特殊附加属性来声明这些ActionMessages。...(也适用于SL TextBox和PasswordBox)等详细信息。...我一直很小心地使ApplicationDeveloperAPI与Caliburn的完整版本保持一致。事实上,我Caliburn.Micro中所做的改进正在被重新折叠到Caliburn v2

    1.8K20

    C# WPF MVVM开发框架Caliburn.Micro关于关于Actions⑤

    当然,ActionMessage是这个标记特定于Caliburn.Micro的部分。它表示当触发发生,我们应该发送一条“SayHello”的消息。...那么,为什么我描述此功能使用“send a message”而不是“execute a method”?这是有趣而有力的部分。ActionMessage可视树冒泡搜索可以处理它的目标实例。...由于我们使用了模型优先的方法,当Caliburn.Micro(以下简称CM)创建视图并使用ViewModelBinder将其绑定到ViewModel,它为我们设置了此方法。...对于button,该属性恰好是“DataContext”,而TextBox默认为Text,SelectedItem的选择器等。视图中使用对另一个命名控件的引用而不是$this,也会发生同样的情况。...如果您主要在Xaml编辑器工作,而不是设计器工作,那么您喜欢Message.Attach。请注意,Message.Attach声明都没有指定应该发送消息的事件。

    2.1K20

    Caliburn.Micro学习笔记(四)----IHandle实现多语言功能

    说一下IHandle实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双向的所以我们想动态的实现多语言切换很是方便今天我做一个小...demo给大家提供一个思路 先看一下效果                                           点击英文  变成英文状态点chinese就会变成中文 ?...下面我们就要开始用Caliburn.Micro的IHandle去实现多语言了 先写一个资源的接口 public interface IResource { string...再写一个简单的信息接口,也就是我们发送广播的数据格式 public interface IMessage { } public class LanguageChangedMessage...x:Name="tb_Show" Text="{local:MyResource Key=文本}"> <TextBox x:Name="tb_Load" Text=

    85070

    : 制作一个备忘录(经典)

    02—内容详述 ①界面button的图标: 图标图片可以上网上下载,下载好以后放到项目目录,然后项目中找到你的图片——>右键包括项目中——>再右键,点击属性: 复制到输出目录,更改为始终复制。...VerticalAlignment="Center" /> ② 数据源:这里我采用从xml读取并绑定到界面,界面如果有修改,页面退出进行数据保存...AllowPerPixelScrolling //逐像素滚动; AllowScrollAnimation //滚动动画,当下拉滚动条时有动画效果 NavigationStyle //选中方式是一行还是单元格 ShowIndicator //是否每一行之前显示小方块...xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Caliburn.Micro.Hello...schemas.devexpress.com/winfx/2008/xaml/editors" xmlns:xctk1="http://schemas.xceed.com/wpf/xaml/toolkit" x:Class="Caliburn.Micro.Hello.MemorandumView

    1.6K20

    【愚公系列】2023年11月 Winform控件专题 Label控件详解

    1.7 CausesValidationWinform,CausesValidation是一个Boolean属性,用于确定控件是否引发验证事件。...当该属性设为true,控件失去焦点时会引发验证事件。当该属性设为false,控件不会引发验证事件。...; e.Cancel = true; // 阻止焦点离开控件 }}当textBox1失去焦点触发textBox1_Validating验证事件。...该事件,判断文本框是否为空,如果为空则弹出提示框并阻止焦点离开控件。这样,用户就必须输入有效的值才能离开文本框。...例如,如果将一个Label控件的Dock属性设置为Top,则该控件将停靠在其容器的顶部,并且容器大小改变,该控件也随之自动调整大小和位置,以保持停靠在顶部的位置不变。

    83611

    WPF 绑定命令 MVVM 的 CanExecute 和 Execute 在按钮点击都没触发可能的原因

    WPF 推荐使用 MVVM 绑定命令,但是绑定命令会存在很多坑,其中一个就是焦点的问题。...如果在用户点击按钮的时候出现了焦点修改,那么此时的命令是不会被触发 命令绑定按钮点击的时候,触发按钮拿到键盘焦点,此时其他元素如果之前有拿到焦点,那么触发元素失去焦点。...,文本可以失去焦点的时候重新拿到焦点 后台代码的失去焦点需要通过一次 Dispatcher 里面写,不然将会出现有趣的坑,具体是什么坑,可以下载我的源代码自己修改一下 请看后台代码...(((UIElement) sender).Focus); } 此时运行代码,点击文本,可以看到输出窗口输出 林德熙是逗比 然后点击文本,输入文字,然后点击按钮,可以发现按钮的命令没有触发

    1.8K20

    表单脚本

    对文件字段来说,这个属性是只读的,包含着文件计算机的路径 (2)表单字段方法 foucs()获取焦点,激活字段,使其可以响应键盘事件 blur()失去交单。... (3)表单字段事件 blur:当前字段失去焦点触发 change:对于和元素,它们失去焦点且value值改变触发;对于元素,在其选项改变触发...focus:当前字段获取焦点触发 表单错误提示流程:利用focus事件修改文本框的背景颜色,以便清楚表明这个字段获取了焦点;利用blur事件恢复文本框的背景颜色;利用change事件在用户输入了非规定字符提示错误...项目中的validate插件,只用到了blur和focus事件。因为某些浏览器,blur事件先于change事件;有些恰好相反!...textbox.focus(); } 部分选择文本的技术实现高级文本输入框很有用,例如提供自动完成建议的文本框就可以使用这种技术。

    4.8K41

    C# WPF MVVM项目实战(进阶②)

    这篇文章还是之前用Caliburn.Micro搭建好的框架上继续做的开发,今天主要是增加了一个用户窗体ImageProcessView,然后通过Treeview切换选择项之后界面显示不同效果的图片...01 — 重要的知识点 本篇内容基于CM框架编写,涉及以下知识点: ①实现 INotifyPropertyChanged:mvvm开发模式,为了前台和后台更好的解耦合,前台界面一般通过绑定属性的方式获取属性值...由于StartViewModel继承了Caliburn.Micro.Screen,Caliburn.Micro.Screen实现了INotifyPropertyChanged,所以StartViewModel...但是我们添加的窗体ImageProcessViewModel除了它的构造函数是StartViewModel实例化(拥有了INotifyPropertyChanged),其它想要实现这个接口有两种方式...继承Caliburn.Micro.Screen,即: public class ImageProcessViewModel : Caliburn.Micro.Screen -.

    1.3K20

    C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

    01 自定义引导程序 在上一部分,我们讨论了Caliburn.Micro WPF应用程序的最基本配置,并演示了与操作和约定相关的两个简单功能。在这一部分,我想进一步探讨Bootstrapper类。...本例我们将使用内置容器,但是Caliburn.Micro可以很好地处理任何容器。首先,继续学习第1部分的代码。我们将以此为出发点。...这是Caliburn.Micro查找视图的地方。您可以应用程序期间的任何时候将程序集添加到此,以使它们可用于框架,但在引导程序也有一个特殊的位置来执行此操作。...从容器中提取往往模糊依赖代码的意图,并可能使测试更加复杂。 除了上面显示的内容之外,引导程序上还有一些其他值得注意的方法。...继承,应将“false”传递给基构造函数的“useApplication”参数。这允许引导程序不存在Xaml应用程序实例的情况下正确配置Caliburn.Micro

    95010

    C# WPF实战项目升级了

    概述 之前用Caliburn.Micro搭建的WPF实战项目,CM框架选用了 3.0.3,实际上CM框架目前最新版已经到4.0。173了,所有很有必须升级一下项目了....升级步骤 step1 :将packages.config迁移到 PackageReference(非必须) 这样做的好处包括精简内容与以及不再需要额外的packages.config文件 step2 :弹出的对话框列出顶级的依赖项和传递的依赖项...,还会询问是否将后者升级到顶级依赖项,这个项目无需做任何改变,直接点击“确定”: step3:打开Caburn.Micro.Hello.csproj,会发现少了些东西,但多了下面这段,这段就是经过精简的...Nuget引用,“管理Nuget程序包”的页面也可以看到已安装的Nuget变少了: <PackageReference Include="<em>Caliburn</em>.<em>Micro</em>...支持的WPF的.NET最低版本是4.6.1,所有这些平台<em>在</em>3.x版本<em>中</em>仍然受支持. -. 重大变化,以下是4.0.0版本<em>中</em>包含的更改。 目标平台已更改,以支持新.NET平台版本。

    95120

    【愚公系列】2023年11月 Winform控件专题 TextBox控件详解

    默认情况下,当用户按下Tab键,文本框会将焦点移动到下一个控件,而不是文本框插入制表符。如果要允许文本框输入制表符,则将AcceptsTab属性设置为true。...1.3 HideSelectionHideSelection属性是WinForms的一个控件属性,它指定当控件失去焦点是否隐藏所选文本。...当HideSelection属性设置为true,当控件失去焦点,文本框的所选文本将不再被高亮显示,而是和其他文本一样显示。...当HideSelection属性设置为false,无论控件是否获得焦点,所选文本都将以高亮显示的形式呈现。在这种情况下,即使失去焦点,选中文本仍然可见和可复制。...当用户文本框输入字符,系统自动将它们替换为。ReadOnly属性用于设置文本框控件是否为只读状态。

    51323
    领券