Tag: 用户控件

如何在菜单项上的父窗口下打开子窗口在WPF中单击?

我正在用C#开发一个应用程序。 我在WPF下使用.Net。 我想打开一个新的子窗口(如对话框),它应该在主窗口中打开,就在菜单栏的下方。 但是,新打开的窗口只显示OS任务栏。 如何在主窗口下打开各种新窗口(如对话框)?

EventHandler为null

我试图从用户控件中引发单击事件并在包含页面上处理它。 我遇到的问题是,当我点击用户控件上的’imgstep1’按钮时,imgstep1_click事件后面的代码会触发,但’btnHandler’事件总是为空。 因此它不会调用父事件。 任何有关这方面的帮助将不胜感激。 我的用户控制代码是: .ascx代码: .ascx.cs代码: public delegate void OnImageButtonClick(); public event OnImageButtonClick btnHandler; protected void imgstep1_Click(object sender, ImageClickEventArgs e) { if (btnHandler != null) btnHandler(); } .aspx页面代码: protected void Page_Load(object sender, EventArgs e) { ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler); } void ucStepHdr_btnHandler() { Response.Write (‘test’); }

UserControl中的Web控件是否为空?

我已经构建了一个小型用户控件,它本质上是一个DropDownList,带有一些基于Target-Property设置的预设值。 这是代码: public partial class Selector : System.Web.UI.UserControl { public string SelectedValue { get {return this.ddl.SelectedValue; } } public int SelectedIndex { get { return this.ddl.SelectedIndex; } } public ListItem SelectedItem { get { return this.ddl.SelectedItem; } } private string target; public string Target { get { return this.target; } set { this.target = value; […]

如何在wpf中使用clear按钮实现文本框?

我有以下UserControl 。 这是一个带Button的TextBox : 在Windows 7中它看起来很棒但在Windows XP中我有以下问题: 有关如何解决问题的任何想法? 如果我使背景透明,那么按钮没有问题,但文本位于按钮下方,看起来很奇怪。

如何使用与OnPropertyChanged一起使用的UserControl的可绑定属性

我有一个简单的usercontrol(WinForms)与一些公共属性。 当我使用此控件时,我想数据绑定到DataSourceUpdateMode设置为OnPropertyChanged的那些属性。 数据源是一个实现INotifyPropertyChanged的类。 我知道需要为属性创建绑定,我正在这样做。 我假设我的usercontrol必须实现一个接口,或者属性需要用某些属性进行修饰,或者沿着那些行进行修饰。但是我的研究空白了。 该如何实现? 目前我正在通过在属性更改时在我的usercontrol中调用OnValidating()来实现它,但这似乎不正确。 如果我在用户控件上将CausesValidation设置为true,我可以进行validation,但这对我来说并不是很有用。 我需要validation每个子属性的变化。 请注意,这是WinForms的情况。 编辑:显然我没有解释的天赋,所以希望这将澄清我在做什么。 这是一个简短的例子: // I have a user control public class MyControl : UserControl { // I’m binding to this property public string ControlProperty { get; set; } public void DoSomething() { // when the property value changes, the change should immediately be applied // to […]

尝试在WPF中构建查询生成器控件

请问我这个问题的长度,我试着尽可能地描述。 我是WPF编程的新手。 我基本上是在尝试构建RadDataFilter控件 : RadDataFilter用于通过构建查询表达式来过滤集合。 通常通过从数据库中提取所有数据然后对其进行过滤来使用该控件。 但是,我正在尝试使用它来构建SQL查询表达式,然后我查询数据库以检索数据。 我们公司拥有Telerik产品的许可证,因此我不得不尝试使用该控件。 不幸的是,控件不灵活到我想要自定义Left Dropdown (RadComboBox)的程度。 由于我们有几个用户可以过滤的项目,因此为它们提供单个dropdpwn是不可行的。 我想有一个自定义控件而不是下拉列表。 我有以下解决此问题的方法: 解压缩该控件的模板,并在我的XAML中覆盖它,如此处所述。 但是,尽管如此,我无法改变控制。 我认为这是由于我对WPF的知识不足。 尝试更改Telerik的源代码(我们也有代码许可证)。 但是,通过这种方法,我们需要在每次升级时不断进行更改,这对团队来说是高度维护。 尝试构建自定义控件。 我正在寻找第三种方法。 如果有一种简单的方法(使用前两种方法)或任何其他解决方案来实现这一点,请告诉我,我会尝试。 为了实现第三种方法,我想使用一个TreeView与每个节点使用ControlTemplate(包含我的自定义控件)。 我将覆盖自定义控件的ToString()方法,该方法为我提供了一个查询条件。 完成后,我将遍历根节点的子节点以构建最终的查询表达式。 然而,正如我所注意到的,我们需要2个不同的ControlTemplates(一个允许创建filter表达式,另一个允许使用运算符,类似于RadDataFilter)。 我不知道如何设置这样的多个模板。 对于那里的一些开发人员来说这听起来很简单,但我对C#和WPF编程很陌生,需要时间和经验来适应它。 如果您知道我可以尝试解决此问题的任何其他解决方案,请通知我。 如果您觉得创建自定义控件更好,请引导我了解实现此目的的最佳方法。 还评论我创建自定义控件的方法。 谢谢!

从控件中对ParentForm WndProc进行子类化

我正在将自定义的MenuStrip控件集成到另一个.NET应用程序中。 除焦点问题外,MenuStrip工作正常。 如果托管MenuStrip的表单没有聚焦,则用户需要单击两次 – 一次激活表单,另一次选择菜单项。 主机表单是单独的.NET应用程序的一部分,我无法修改。 我只能修改我的控件的源代码。 我在WinForm级别找到了一个覆盖Form WndProc方法的解决方案 ,除了我没有WinForm的源代码访问权限,我也可以重新编译主机应用程序和表单。 有没有办法对Control的ParentForm进行子类化,以便在没有聚焦的情况下自动激活ParentForm?

当您需要两个用户控件(winforms)进行通信时的最佳实践

扩展问题 除了下面指定的原始问题之外,我还想添加一个新问题。 应用程序中的一个用户控件包含我需要从另一个用户控件访问的对象列表。 如何才能做到这一点? (我不相信控制的划分很好,但我宁愿不改变它……) 我应该通过事件和原始问题一起做,还是应该抓住父窗体,并使用它来查找控件的实例,并将其作为属性公开? 原来的问题 我有一个表单中的两个用户控件,我希望能够相互通信。 Usercontrol A应该能够在B上启动操作。 解决这个问题的首选方法是什么? 表单应该从A等待事件,然后在B上开始操作吗? 这有什么设计模式吗? 或者它是一个更简单的解决方案? 提前致谢! 🙂

将值从页面传递到用户控件

我将名称和姓氏存储在主页面的两个标签中。 我在类中也有这些值(类没有做太多但是我将它们用于将来的扩展)。 我有一个用户控件,它将发送一个名称和姓氏为正文的电子邮件。 我的问题是如何将标签或类变量值转换为用户控件的body变量?

绑定到UserControl DependencyProperty

我创建了一个带有一些DependencyProperties的UserControl(在这个例子中只有一个字符串属性)。 当我实例化Usercontrol时,我可以设置UserControl的属性,并按预期显示。 当我尝试通过Binding替换静态文本时,不显示任何内容。 我的UserControl如下所示: 守则背后是: namespace TestUserControBinding { public partial class MyUserControl : UserControl { public MyUserControl() { InitializeComponent(); this.DataContext = this; } public static readonly DependencyProperty MyTextProperty = DependencyProperty.Register( “MyText”, typeof(string), typeof(MyUserControl)); public string MyText { get { return (string)GetValue(MyTextProperty); } set { SetValue(MyTextProperty, value); } }// MyText } } 当我在MainWindow中尝试这个时,一切都如预期: 但这不起作用: 标签的行为是正确的,因此属性“文本”没有问题 我的错是什么? […]