随笔分类 - WPF
摘要:静态资源和动态资源的区别在于静态资源只从资源集合中获取对象一次,然而动态资源在每次需要对象时都会重新从资源集合中查找对象。这意味着可以在同一键下放置一个全新对象,并且动态资源会应用该变化。作为一般性规则,只有在下列情况下才需要使用动态属性:1.资源具有依赖系统设置的属性。2.计划通过编程替换动态资源。不应该过渡使用动态资源。主要原因是对资源的修改未必会触发对用户界面的更新 <Window.Resources> <ImageBrush x:Key="TileBrush" x:Name="DynamicBrush" TileMode=&qu
阅读全文
摘要:WPF资源系统是一种保管一系列有用对象的简单方法,从而可以更容易地重用这些对象。资源可以在代码中创建和操作,但经常在XAML标记中定义资源。资源的优点有:1.高效。2.可维护性。3.适应性示例如下:静态资源定义: <Window.Resources> <ImageBrush x:Key="TileBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,32,32" ImageSource="happyface.jpg&q
阅读全文
摘要:数据绑定是一种关系,WPF从一个源对象提取一些信息,并使用这些信息设置目标对象的属性。1.将元素绑定到一起 例如:滑块的拖动,改变TextBlock字体的大小,如果不采用元素绑定,需要为Silder控件添加ValueChanged事件。下面的示例是简单的元素绑定。 <Grid> <Slider Name="sliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10" TickFrequency="1&qu
阅读全文
摘要:WPF应用程序中的程序集资源和其他.net应用程序中的程序集资源在本质上是相同的。WPF程序集资源和其他应用程序中的程序集资源之间的重要区别是引用资源的寻址系统不同。 1.添加资源 可以通过向项目添加文件,并将其Build Action属性设置为Resource。 2.检索资源 添加资源很简单,检索资源有多种方法: #region 检索资源 //方法一:StreamResourceInfo对象 StreamResourceInfo sri = Application.GetResourceStream( ...
阅读全文
摘要:先来看第一种最简单粗暴的做法:检测进程名,如果名称一样,则表示程序已经启动了,就不再启动. protected override void OnStartup(StartupEventArgs e) { // Get Reference to the current Process Process thisProc = Process.GetCurrentProcess(); // Check how many total processes have the same name as the current one if (Pro...
阅读全文
摘要:代码下载 为了处理命令行参数,需要相应Application.Startup事件。命令行参数是通过StartupEventArgs.Args属性作为字符串数组提供的。例如:加载一个文档,文档的名称通过命令行参数传递。这种情况下就有必要读取命令行参数作进一步的处理。C# 代码 public partial class App : Application { private void App_Startup(object sender, StartupEventArgs e) { FileViewer win = new FileVi...
阅读全文
摘要:WPF应用程序运行速度快,但不能在瞬间启动。当第一次启动应用程序时,会有一些延迟,因为CLR首先要初始化.net环境,然后启动应用程序。如果初始化的时间长,可以通过显示一个打开的图形是应用程序显得更加专业。下面是添加初始化界面的方法:(1)为项目添加一个图形文件(未见通常为.bmp,.png,或者.jpg)(2)选中该图形文件(3)将生成操作修改为SplashScreen.程序运行时会在屏幕的中央先生一张图片,图形渐变消失,窗体显示出来.
阅读全文
摘要:FontFamily 字体名称。FontSize 字体大小。FontStyle 字体样式。FontWeight 设置字体为粗体或斜体或正常字体等。FontStretch 字体的拉伸。1.FontFamily是字体的集合,例如Times New Roman,在选择字体时,必须提供完整的FontFamily如: <Button Content="Button" FontFamily="Times New Roman" Height="38" HorizontalAlignment="Left" Margin=&q
阅读全文
摘要:所有控件都包含背景和前景属性,设置Background和Foreground的值改变背景或前景颜色。1.使用代码设置颜色 button1.Background = new SolidColorBrush(Colors.Blue); button2.Background = new SolidColorBrush(SystemColors.ControlColor); //button2.Background = SystemColors.ControlBrush; //button2.Backgroun...
阅读全文
摘要:WPF控件有如下几类:1.内容控件 这些控件能够包嵌套的元素,内容控件包括Label、Button、以及ToolTip类2.带有标题的内容控件 这些空间是允许添加一个主要内容内容部分以及一个单独标题部分的内容控件。他们通常用户包装更大的用户界面块。这类控件有 TabItem、GroupBox以及Expander类。3.文本控件 文本空间比较少。Textbox PasswordBox,RichTextBox4.列表控件 这些控件在列表中显示项目集合。列表控件包括ListBox和ComboBox5.基于范围的控件 这些控件只关心一个属性Value。例如Slider ProgressBar。6.日.
阅读全文
摘要:WPF中的拖放操作的方法和事件被集中到System.Windows.DragDrop.拖放操作通过下面三个步骤进行:(1)用于单击一个元素,并保持鼠标键为按下状态。这是信息被搁置起来,并且拖放操作开始。(2)用户将鼠标移动到其他元素上,如果该元素可以接受正在拖动的内容,鼠标指针会变成拖放图标。否则鼠标指针会变成一个禁止的图标。(3)当用户释放鼠标时,元素接受信息并决定如何处理接受到的信息,在没有释放鼠标时,可以通过按下Esc键取消操作。Xaml<Window x:Class="Prj_05_5MouseDragDrop.MainWindow" xmlns="
阅读全文
摘要:隧道路由事件的工作方式和冒泡路由事件相同,但方向相反:如果将隧道路由事件标记为已处理过,冒泡路由事件就不会发生。
阅读全文
摘要:假设在StackPanel面板中包含了一堆按钮,并且希望在一个事件处理程序中处理所有这些按钮的事件,一种办法是每个按钮的Click事件关联到同一个事件处理程序。还有一种更简单的办法,可以通过处理更高元素的Click事件来处理所有按钮的单击事件。 <StackPanel Button.Click="DoSomething" Margin="5"> <Button Name="cmd1">Button1</Button> <Button Name="cmd2">Butto
阅读全文
摘要:cmdClear.addHander(UIElement.MouseUpEvent,new MouseButtonEventHandler(cmdClear_MouseUp),true)
阅读全文
摘要:WPF中的路由事件是具有更强传播能力的事件,它们可以在元素树中向上冒泡和向下隧道传播,并且沿着传播路径被事件处理程序处理。下面的例子演示了事件冒泡的过程。<Window x:Class="Prj05_1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="BubbledLabelClick&qu
阅读全文
摘要:现在的一个项目要用到动态图表,网上找到开源的DynamicDataDisplay,有些小地方不满足需求,图例是斜线,客户要求要求横线,原来的程序横坐标是压缩的,客户要求直线固定区间的曲线图,DynamicDataDisplay DynamicDataDisplay v0.3 Source源码下载地址1.修改图列,这个是在XAML中写死的,只有一个字"改"! 找到\DynamicDataDisplay v0.3 Source\src\DynamicDataDisplay\Charts\LineLegendItem.xaml文件,找到第11行, <Line X1=&quo
阅读全文
摘要:<Grid Margin="3,3,10,3"> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height=&q
阅读全文
摘要:设置列ColumnDefinition 属性中的 SharedSizeGroup ,SharedSizeGroup的值相同时,可以控制一个Grid中的列和另外一个Gird中的某一列的宽度相同。还有一个要注意的是 顶级Grid元素的IsSharedSizeScope要设置为True <Grid Grid.IsSharedSizeScope="True" Margin="3" ShowGridLines="True"> <Grid.RowDefinitions> <RowDefinition></
阅读全文
摘要:Gird布局容器的功能比较强大,能够使用其他布局容器实现的功能,Grid也能实现,Gird是网格式布局,创建Grid面板的布局需要两个步骤:1.创建希望的行和列的数量。2为每个包含的控件指定适当的行和列。下面试XAML 代码: <Grid ShowGridLines="True"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions&g
阅读全文
摘要:DockPanel StackPanel WrapPanel这些面板很少单独使用,对窗口的控件进行布局很多时候都是嵌套使用的。下面是DockPanel 和StackPanel的嵌套使用 ,创建一个对话框。 <DockPanel LastChildFill="True"> <StackPanel DockPanel.Dock="Bottom" HorizontalAlignment="Right" Orientation="Horizontal"> <Button Margin=&quo
阅读全文

浙公网安备 33010602011771号