Tag: wpf

如何删除WPF标签中文本的边距?

我试图用标签制作一个小虚拟键盘。 以下是我在XAML中的键盘(但只有3个键): 问题在于标签中的文本周围有太多空间,导致键盘比需要的大得多。 如果我手动设置标签的高度和宽度,则(1)不考虑字体的差异,(2)将剪切部分字母而不是顶部和左边距。 还有其他方法可以将这些边距缩小到与文本本身大小相同的范围吗?

绑定到WPF DataGrid时,此视图不允许使用DataGrid版本的“EditItem”

我一直在阅读这个至少4个小时,似乎是列表类型,但我有一个情况: 具有集合属性的ObservableCollection。 我定义了第一个DataGrid,并在该部分中 一切顺利,屏幕上的所有内容都如我所料……但是: 如果尝试修改DataGrid1单元格,它允许我。 如果尝试修改DataGrid2单元格,则会抛出此exception’EditItem’ is not allowed for this view 我错过了什么? 这是我的模特: public partial class Level1 { public Level1() { this.Level2 = new HashSet(); } public decimal IdLevel1 { get; set; } public decimal IdLevel2 { get; set; } public string StrDescripcionTipoAsociado {get;set;} public virtual Level2 Level2{ get; set; } } public partial […]

串口读取+线程还是更好的东西?

我不知道这是否是使用堆栈完成此任务的好方法,但我确信有更快的方法…我从微控制器获取数据但数据长度并不总是相同的长度。 我想也许我可以在我的堆栈中推送数据,在一个线程中我可以弹出它并解码消息。 我不想放慢DataReceivedHandler的速度,然后我创建了一个Thread,它可以弹出数据并将其写入我的decodeMessage()函数中的Listview。 一段时间后,我得到一个System.OutOfMemories例外.. 有什么想法我怎么能以更好的方式做到这一点? 当数据到达时,我正在从我的串口读取: Stack stack = new Stack(); ….. public void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; byte[] data = new byte[sp.BytesToRead]; sp.Read(data, 0, data.Length); stack.Push(data); } 这是我的主题: private void formatData() { try { while (true) { byte[] data; int i=0; Dispatcher.BeginInvoke(new Action(() => { while (stack.Count > 0) […]

RadioButton.Checked错误:Control.Checked不能出现在+ =或 – =的左侧

我遇到了最奇怪的问题,我不得不遗漏一些东西。 这是导致错误的代码。 if (radLot.Checked == true) { SymbolSpecification = “LotRenderer”; } if (radWaterMeter.Checked == true) { SymbolSpecification = “WaterMeterRenderer”; } 正如你所看到的,我甚至不使用= +或 – = …我实际上在我的代码中没有它…任何帮助将不胜感激。

WPF数据绑定exception处理

我有一个绑定到Integer属性的文本框。 当用户在文本框中输入无法转换为整数(例如名称)的内容时,将抛出exception并且原始属性值不会更改。 我想捕获exception,以便我可以禁用连接到该属性的命令? 我怎么能这样做,如果可能的话,从定义属性的视图模型?

怎么做c#碰撞检测?

c#中是否有任何允许碰撞检测的预定义方法? 我是c#的新手,我试图获得两个椭圆的碰撞检测是否有任何预定义的方法可以实现碰撞检测? 我已经有了绘制省略号的代码,开始碰撞检测的好方法是什么? private void timer1_Tick(object sender, EventArgs e) { //Remove the previous ellipse from the paint canvas. canvas1.Children.Remove(ellipse); if (–loopCounter == 0) timer.Stop(); //Add the ellipse to the canvas ellipse = CreateAnEllipse(20, 20); canvas1.Children.Add(ellipse); Canvas.SetLeft(ellipse, rand.Next(0, 500)); Canvas.SetTop(ellipse, rand.Next(0, 310)); } // Customize your ellipse in this method public Ellipse CreateAnEllipse(int height, int width) […]

C#WPF将英文数字转换为阿拉伯数字

我需要为我正在处理的应用程序显示阿拉伯数字字符的英文双。 这是一个包含double的示例类: public class Class1 { private double someDouble = 0.874; public double SomeDouble { get { return someDouble; } } } 我想将SomeDouble的值转换为运行时以阿拉伯数字字符显示的百分比。 这是我用过的一些快速XAML测试: 和我的测试值转换器,DoubleValueConverter: public class DoubleValueConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { double valueAsDouble = (double)value; return valueAsDouble.ToString(“P1”, culture); } public object ConvertBack(object value, Type […]

WPF – 无边框窗口没有正确最大化

好吧,所以我一直在谷歌搜索几个小时,似乎无法找到我所遇到的问题的直接答案。 我有一个自定义窗口, WindowStyle = “None”和AllowsTransparency = “True”当我点击我的最大化按钮时: private void MaximizeButton_Click(object sender, RoutedEventArgs e) { if(this.WindowState == WindowState.Normal) { App.Current.MainWindow.WindowState = WindowState.Maximized; } else { App.Current.MainWindow.WindowState = WindowState.Normal; } } 它几乎完全按照它的方式最大化,除了它似乎在窗口的顶部和左侧有-6px的边距。 这是它的样子 我不希望那个白色空间存在(它只是白色,因为谷歌Chrome在它背后开放,它实际上是透明的)。 我需要应用程序最大化以适应整个屏幕,不包括任务栏。 到目前为止,我发现的唯一修复是在按下最大化按钮时将窗口Margin = “6, 6, 0, 0″设置为Margin = “6, 6, 0, 0” 。 以下是其余代码供参考: StartUp.xaml App Name Welcome to your Expense Calculator! Get […]

全局类的实例

仍在努力了解C#(主要与C合作)。 我有一个类“设备”,并希望创建该类的实例,但也想全局访问实例,因为我在我的GUI方法中使用它们太多了。 public class Device { public string Name; public List models = new List(); public List revisions = new List(); … } 以某种方式在全球宣布: Device Device1 = new Device(); Device1.Name = “Device1”; 然后在WPF方法中访问它: private void DeviceViewItem_Selected(object sender, RoutedEventArgs e) { TreeViewItem selected = (TreeViewItem)sender; if (selected.Name == Device1.Name) { Device1.Models.Add(“something”); Device1.Revisions.Add(“something”); } 我一直在阅读关于单例模式,但看起来你必须创建一个单例类,但我的“设备”类被多次使用来创建许多设备。 也许我只是不明白这种模式。

WPF应用程序中的WinForms对话框:控件看起来像.NET 2.0

我有一个WinForms应用程序,并开始将其转换为WPF。 为了减少工作量,我的想法是让旧的对话框窗口成为WinForms。 在VS2010设计器中,对话框看起来很正常(使用.NET 3.5 / 4.0控件)但是如果我运行我的程序,所有WinForms控件都会变成旧样式,它看起来像.NET 2.0(我想你知道我的意思,那个灰色所有控件的斜角样式……) 那里发生了什么? 有什么办法解决这个问题?