首页 > 其他分享 >wpf add resource dynamically in cs file

wpf add resource dynamically in cs file

时间:2024-03-24 10:45:57浏览次数:31  
标签:resource Windows dynamically System FindResource add Brush using

//xaml
<Window x:Class="WpfApp12.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp12"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <LinearGradientBrush x:Key="brush1">
            <GradientStop Offset="0" Color="Yellow"/>
            <GradientStop Offset="1" Color="Orange"/>
        </LinearGradientBrush>
    </Window.Resources>
    <StackPanel x:Name="panel">
        <Rectangle Height="100" Stroke="Black"
                   Fill="{StaticResource brush1}"/>
        <Ellipse StrokeThickness="20" Height="100" x:Name="ellipse"
                 Stroke="{StaticResource brush1}" />
        <Rectangle Fill="{StaticResource brush2}" Stroke="Black" StrokeThickness="20" Height="100"/>
    </StackPanel>
</Window>


//xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp12
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            AddResources();
            InitializeComponent();
            FindResource(); 
        }

        private void AddResources()
        {
            //green
            this.Resources.Add("brush2", new SolidColorBrush(Color.FromRgb(0,255,0)));
        }

        private void FindResource()
        {
            Brush bs = (Brush)this.FindResource("brush1");
            Ellipse ellipse = panel.FindName("ellipse") as Ellipse;
            Ellipse elp2 = this.FindName("ellipse") as Ellipse;
            Brush brush2 = this.FindResource("brush1") as Brush;
            Brush bs2 = (Brush)this.TryFindResource("brush2");
            if(bs2 != null) 
            {
                bs2.Freeze();
            }
        }
    }
}

 

 

The key part located at add resource  via c# ,and place the Add function before InitializeComponent,then we can invoke the added resource just now.

标签:resource,Windows,dynamically,System,FindResource,add,Brush,using
From: https://www.cnblogs.com/Fred1987/p/18092143

相关文章

  • add shortcut
    @echooff%1%2ver|find"5.">nul&&goto:Adminmshtavbscript:createobject("shell.application").shellexecute("%~s0","goto:Admin","","runas",1)(window.close)&goto:eof:Adminsetcurr......
  • @Autowired,@Resource,@Value,@Lazy注入的核心逻辑原理
    classDefaultListableBeanFactoryextendsAbstractAutowireCapableBeanFactory{@Override@NullablepublicObjectresolveDependency(DependencyDescriptordescriptor,StringrequestingBeanName,Set<String>autowiredBeanNames,TypeConverter......
  • @Autowired注解与@Resource注解
    1.包来源@Autowired注解是spring框架自带的。@Resource注解是JDK扩展包中,使用需要引入(jdk8-11不需要引入)。2.装配规则@Autowired注解默认是根据类型byType装配,如果想根据名称装配,需要配合@Qualifier注解一起使用。@Resource注解默认根据名称byName装配,未指定name时,使用属性名......
  • k8s资源限制之LimitRange和ResourceQuota
    在Kubernetes中,LimitRange和ResourceQuota都是用于资源管理的工具,但它们的目的、作用范围和使用方式有所不同。作用范围LimitRange是在Pod和容器级别上进行资源限制的工具,主要用于设定CPU和内存两种计算资源的可用范围,并且还可以支持在PersistentVolumeClaim资源级别设定存储空......
  • Oracle函数7—日期函数(sysdate 、to_date、add_months、last_day......)
    文章目录1、日期获取(sysdate、current_date)2、设置时间格式(to_date、to_char)3、两个日期的差(直接加减)4、月份加减(add_months)5、取某月最后一天(last_day)6、两个日期相差月份数(months_between)7、获取下个周几是几号(next_day)8、获取指定时间的年或月或日(extract)9、时间的四......
  • 【飞浆AI实战】交通灯检测:手把手带你入门PaddleDetection,从训练到部署
    前言本次分享将带领大家从0到1完成一个目标检测任务的模型训练评估和推理部署全流程,项目将采用以PaddleDetection为核心的飞浆深度学习框架进行开发,并总结开发过程中踩过的一些坑,希望能为有类似项目需求的同学提供一点帮助。项目背景和目标背景:目标检测是计算机视觉的一......
  • linux下InetAddress.getLocalHost()很慢10s
    问题原因:执行InetAddress.getLocalHost()方法的时候,根据系统名称去hosts文件里找匹配的ip发现找不到合适的IP,一直处于等待状态。解决办法:1、查看本机系统名称 2、编辑hosts文件,在其后补充“cenos1”     参考链接:https://blog.csdn.net/lijun169/article/detail......
  • 内存检测工具——ASan(AddressSanitizer)的介绍和使用
    ASan介绍ASan全称AddressSanitizer,是一种内存错误检测工具,目的是帮助开发者检测和调试内存相关的问题,如使用未分配的内存、使用已释放的内存、堆内存溢出等。ASan是由Google开发的,广泛用于C、C++等语言的代码中。ASan的工作原理是在编译时将额外的代码插入到目标程序中,对内存的......
  • 使用 openssl 进行 RSA/ECB/PKCS1PADDING 加解密
    使用java进行RSA/ECB/PKCS1PADDING是非常方便的,例如下面的示例publicstaticStringpublicDecrypt(PublicKeypublicKey,Stringencrypted)throwsException{Ciphercipher=Cipher.getInstance("RSA/ECB/PKCS1Padding");cipher.init(Cipher.DECRYPT_......
  • [983] Add a notification after finishing the Python script
    ref:HowtoimplementaPythondesktopnotifierusingtheplyermoduleYoucangenerateanotificationafteryourPythoncodefinishesexecutingusingvariousmethods.Hereareafewoptions:UsingPlyer(Cross-Platform):Installthe plyer libraryusi......