wpf 怎么为label 添加 图标?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf 怎么为label 添加 图标?相关的知识,希望对你有一定的参考价值。
参考技术A直接定义在控件中,如下:
<Label Width="200" Height="100">
<Label.Content>
<DockPanel>
<Image Source="logo.png" Width="20" Height="20" DockPanel.Dock="Left"/>
<TextBlock Text="33333333333" DockPanel.Dock="Right" />
</DockPanel>
</Label.Content>
</Label>
在样式中定义如下:
<Style x:Key="LabelStyle1" TargetType="x:Type Label">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="x:Type Label">
<Border BorderBrush="TemplateBinding BorderBrush" BorderThickness="TemplateBinding BorderThickness" Background="TemplateBinding Background" Padding="TemplateBinding Padding" SnapsToDevicePixels="true">
<DockPanel>
<Image Source="logo.png" Width="20" Height="20" DockPanel.Dock="Left"/>
<ContentPresenter DockPanel.Dock="Right" HorizontalAlignment="TemplateBinding HorizontalContentAlignment" RecognizesAccessKey="True" SnapsToDevicePixels="TemplateBinding SnapsToDevicePixels" VerticalAlignment="TemplateBinding VerticalContentAlignment"/>
</DockPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="DynamicResource x:Static SystemColors.GrayTextBrushKey"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
为什么在设计器里面可以看到 但一运行就看不到了
追答你的图片资源属性没有配置正确。
在图片资源属性中配置
Build Aciton和Copy to Output Directory;
前者你配置成Content,后者配置为Copy always 或者 Copy if newer;
这样会在编译后的输出多一张图片。
当然你也可以将图片作为资源编译到exe中。
WPF 走马灯 文字滚动 自定义控件
原文:WPF 走马灯 文字滚动 自定义控件/// <summary> /// Label走马灯自定义控件 /// </summary> [ToolboxBitmap(typeof(Label))] //设置工具箱中显示的图标 public class ScrollingTextControl : Label { /// <summary> /// 定时器 /// </summary> Timer MarqueeTimer = new Timer(); /// <summary> /// 滚动文字源 /// </summary> String _TextSource = "滚动文字源"; /// <summary> /// 输出文本 /// </summary> String _OutText = string.Empty; /// <summary> /// 过度文本存储 /// </summary> string _TempString = string.Empty; /// <summary> /// 文字的滚动速度 /// </summary> double _RunSpeed = 1000; DateTime _SignTime; bool _IfFirst = true; /// <summary> /// 滚动一循环字幕停留的秒数,单位为毫秒,默认值停留3秒 /// </summary> int _StopSecond = 3000; /// <summary> /// 滚动一循环字幕停留的秒数,单位为毫秒,默认值停留3秒 /// </summary> public int StopSecond { get { return _StopSecond; } set { _StopSecond = value; } } /// <summary> /// 滚动的速度 /// </summary> [Description("文字滚动的速度")] //显示在属性设计视图中的描述 public double RunSpeed { get { return _RunSpeed; } set { _RunSpeed = value; MarqueeTimer.Interval = _RunSpeed; } } /// <summary> /// 滚动文字源 /// </summary> [Description("文字滚动的Text")] public string TextSource { get { return _TextSource; } set { _TextSource = value; _TempString = _TextSource + " "; _OutText = _TempString; } } private string SetContent { get { return Content.ToString(); } set { Content = value; } } /// <summary> /// 构造函数 /// </summary> public ScrollingTextControl() { MarqueeTimer.Interval = _RunSpeed;//文字移动的速度 MarqueeTimer.Enabled = true; //开启定时触发事件 MarqueeTimer.Elapsed += new ElapsedEventHandler(MarqueeTimer_Elapsed);//绑定定时事件 this.Loaded += new RoutedEventHandler(ScrollingTextControl_Loaded);//绑定控件Loaded事件 } void ScrollingTextControl_Loaded(object sender, RoutedEventArgs e) { _TextSource = SetContent; _TempString = _TextSource + " "; _OutText = _TempString; _SignTime = DateTime.Now; } void MarqueeTimer_Elapsed(object sender, ElapsedEventArgs e) { if (string.IsNullOrEmpty(_OutText)) return; if (_OutText.Substring(1) + _OutText[0] == _TempString) { if (_IfFirst) { _SignTime = DateTime.Now; } if ((DateTime.Now - _SignTime).TotalMilliseconds > _StopSecond) { _IfFirst = true; ; } else { _IfFirst = false; return; } } _OutText = _OutText.Substring(1) + _OutText[0]; Dispatcher.BeginInvoke(new Action(() => { SetContent = _OutText; })); } }
以上放到cs文件中 然后 编译 就可以在工具箱中看到ScrollingTextControl 名称的label控件
<Window x:Class="WpfDemoNew.Window21" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window21" Height="300" Width="300" xmlns:my="clr-namespace:WpfDemoNew.Control"> <Grid x:Name="grid"> <my:ScrollingTextControl Content="12345" Height="52" HorizontalAlignment="Left" Margin="10,10,0,0" x:Name="scrollingTextControl1" VerticalAlignment="Top" Width="121" Foreground="Black" /> </Grid> </Window>
以上是关于wpf 怎么为label 添加 图标?的主要内容,如果未能解决你的问题,请参考以下文章