Tag: 自定义控件

WPF样式/模板仅应用于最后添加的元素

我有一个从ContentControl派生的简单控件,代码如下: public class HeaderFooterControl : ContentControl { static HeaderFooterControl() { DefaultStyleKeyProperty.OverrideMetadata(typeof(HeaderFooterControl), new FrameworkPropertyMetadata(typeof(HeaderFooterControl))); } public object Header { get { return (object)GetValue(HeaderProperty); } set { SetValue(HeaderProperty, value); } } // Using a DependencyProperty as the backing store for Header. This enables animation, styling, binding, etc… public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(“Header”, typeof(object), typeof(HeaderFooterControl)); public […]

WPF:如何使自定义模式对话框闪烁?

通常,当您打开modal dialog并尝试单击它的父窗口时,modal dialog的标题栏会闪烁。 在WPF中创建自定义,无边框,无边框的窗口时,您将失去所有这些function,并且必须自己重建它。 我看起来高低,因为我的生活无法弄清楚如何让我的模态窗口闪烁。 虽然它仍然会发出哔哔声…… 我想我将不得不在WndProc中观察一些我必须处理的事件,但我无法弄清楚哪个事件或如何做到这一点。 我已经尝试观察窗口更改和窗口更改事件以及WM_ACTIVATE事件无济于事。 我确定我只是遗漏了一些简单的东西,但我会很感激你的帮助。 谢谢!

箭头键事件未到达

基本上,我有一个带有自定义控件的表单(没有别的)。 自定义控件完全为空,表单将KeyPreview设置为true。 使用此设置,我没有收到任何箭头键或Tab的任何KeyDown事件。 我键盘上的其他每个键都有效。 我有KeyDown事件处理程序连接到有这些事件的所有事情,所以我敢肯定我没有遗漏任何东西。 另外值得注意的是,如果我删除(完全空)自定义控件,我会得到箭头键事件。 到底是怎么回事? 编辑: 我将此添加到窗体和控件中,但我仍然没有获得箭头键: protected override void WndProc(ref Message m) { switch (m.Msg) { case 0x100: //WM_KEYDOWN //this is the control’s version. In the form, it’s this.Text ParentForm.Text = ((Keys)m.WParam).ToString(); break; } base.WndProc(ref m); } 我还检查了Spy ++,并确定表单本身没有得到任何WM_KEYDOWN消息,它们都是控件。 但是,那就是说,控件IS得到了箭头键WM_KEYDOWN消息。 叹。 编辑2:我还使用此版本更新了ZIP文件。 请看看,如果你想帮忙…… 编辑3: 我已经想到了这一点。 表格正在吃箭头键,可能是为了保持孩子们的注意力。 事实certificate,如果表格为空,我会收到事件。 无论如何,如果我将此代码添加到表单中,我会再次开始获取事件: public override bool PreProcessMessage(ref […]

WPF如何使用validation和绑定创建自定义文本框

我正在开发一个用于货币编辑的自定义文本框。 我已经看到一些准备使用它们,但它们很复杂和/或实际上不可用,迫使你做坏事(比如硬编码应该在控件上使用的名称)。 所以我决定自己做,但是我无法使用绑定选项,因为分配给绑定属性的属性必须是小数,但TextBox控件的Text属性接受字符串。 我想的答案可能是覆盖基类(TextBox)中Text属性的访问方法(getter和setter),但是不允许这样做。 我的绑定应该设置为值,它设置TextBox的text属性,将其格式化为文本(带有货币符号和所有内容),但将其转换回Get方法上的数值数据类型。 这是我到目前为止所取得的成就: public class CurrencyTextBox : TextBox { private bool IsValidKey(Key key) { int k = (int)key; return ((k >= 34 && k = 74 && k <= 83) //numeric keypad 0 to 9 || (k == 2) //back space || (k == 32) //delete ); } private void Format() { […]

在Winforms中绘制一个闪烁的插入符号

我正在开发一个自定义控件,它最像一个文本区域。 我正在绘制文本,它正常工作,并接受也可以工作的输入..但是我(用户)在我输入的时候会猜测插入符号的位置,因为我正在手动执行所有操作。 如何绘制闪烁的插入符号以显示我当前正在键入的位置? 有没有标准的方法来做到这一点?

如何设置我的自定义控件的描述以显示在ToolBox中?

我想在设计时添加一个文本,告诉设计师我的控件在我的自定义控件中是什么。 就像这里的VS默认控件一样: 我已经尝试了///summary但它对我不起作用。 怎么做到呢?

如何在WinForm中使用GraphicsPath绘制圆形进度条饼?

我想在WinForm中使用自定义循环进度条。 但结果不符合我的想法。 如何在这张图片中绘制相同的形状? 我上传了两张图片,以清楚我的问题。 我的代码是这样做的: void Form1_Paint(object sender, PaintEventArgs e) { int angle = 120; e.Graphics.SmoothingMode = SmoothingMode.HighQuality; Rectangle outerRect = new Rectangle(50, 50, 100, 100); Rectangle innerRect = new Rectangle(70, 70, 60, 60); int innerRadius = innerRect.Width / 2; int outerRadius = outerRect.Width / 2; Point innerCenter = new Point(innerRect.X + innerRadius, innerRect.Y + […]

WP8如何创建基页并使用它

我用谷歌搜索,但没有得到任何有用的资源,所以我决定问。 问题: 我有一个Windows Phone 8 C#/ XAML .NET 4.5应用程序 ,它将有几个页面( 15 – 50 ),它们将具有相似的外观+相同的datacontext设置为一个ViewModel实例 : ————————– |logo usermenu(v)| ————————– | | | | | | | ..variable.. | | ..content… | | | | | ————————– 题 : 我在这件事上找不到任何可用的东西,有人可以解释一下怎么做吗? (我是菜鸟 – 这意味着我很感激任何有用的信息,但更多的是对傻瓜的解释) 如何创建一个基页/祖先来从中派生我的页面? 有没有办法在祖先中设置datacontext? 如何使用该基页/祖先? PS:如果你想知道为什么我想要有相同datacontext的页面,有更多关于它的文章写在我之前问过的这个问题

在asp.net中为WebControl定义自定义事件

我需要在自定义控件中将3个事件定义为OnChange , OnSave和OnDelete 。 我有一个GridView并使用它的行。 你能帮助我并告诉我这段代码吗?

WPF自定义控件依赖属性中未知对象的双向绑定问题

我有一个自定义控件 – 为AutoComplete TextBox实现。 我从以下问题得到了所有想法在WPF C#中使用多个控件的组合创建自定义控件 。 在该自定义控件中,他们建议使用以下代码来添加项目, 它的完美工作和双向绑定 。 (this.ItemsSource as IList).Add(this._textBox.Text); 但是,我将以下代码更改为Unknown Object,因此我将IList更改为IList (this.ItemsSource as IList).Add(item); XAML: 但它没有更新ViewModel Property Collection 。 我也在xaml中尝试了以下更改 ItemsSource=”{Binding Collection, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}” 我不知道我在哪里犯了这个错误。 function : CustomControl的TextBox接受来自User的输入并触发ProviderCommand ,该Command根据User Input过滤远程数据并通过AutoItemsSource发送Filtered Collection,此属性被绑定为ListBox内的ItemsSource CustomControl选择Item。 我们可以从ListBox项中选择Item,通过单击Item,它会触发CustomControl类中的Command AddCommand ,它会在CustomControl ItemSource属性中添加所选项。 我在这个Property ItemsSource遇到了双向绑定问题 。 仅从此属性中我们可以将Selected项目作为集合。 这是我的完整源代码 自定义控件C#代码: public class BTextBox : ItemsControl { static BTextBox() { […]