WPF自定义控件的应用(DynamicResource的使用方法)

1 DynamicResource的使用方法

可以在字典文件 的抬头区写入数:

csharp 复制代码
 <SolidColorBrush x:Key="PrimaryBackgroundColor" Color="#FFABAdB3"/>
    <SolidColorBrush x:Key="TextBox.MouseOver.Border" Color="#FF7EB4EA"/>
    <SolidColorBrush x:Key="TextSecundaryColor" Color="#FF569DE5"/>

设定好颜色:

则引用时直接使用:

csharp 复制代码
 BorderBrush="{DynamicResource PrimaryBackgroundColor}"

另一种方式 引用 fontFamily 的方式与此相似

csharp 复制代码
  <FontFamily x:Key="HgFont">../../CommonInMy/Fonts/#iconfont</FontFamily>

当然这个只是写在

节点下,如果想整个项目都用这个链接方法就是直接写在 app.xaml 下;

引用方式 FontFamily="{ DynamicResource HgFont}"

2 自定义控件(数据增减下拉操作)

2.1 控件本身类

csharp 复制代码
public class UInputNumberTextBox : Control
    { 
        static UInputNumberTextBox()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(UInputNumberTextBox), new FrameworkPropertyMetadata(typeof(UInputNumberTextBox)));
        }


        private Button btnSubtract;
        private Button btnAdd;


        public int Text
        {
            get { return (int)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Text.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty TextProperty =
            DependencyProperty.Register("Text", typeof(int), typeof(UInputNumberTextBox), new PropertyMetadata(0));


        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            btnSubtract = GetTemplateChild("btnSubtract") as Button;
            if (btnSubtract != null)
            {
                btnSubtract.Click += BtnSubtract_Click;
            }

            btnAdd = GetTemplateChild("btnAdd") as Button;
            if (btnAdd != null)
            {
                btnAdd.Click += BtnAdd_Click;
            }
        }

        private void BtnAdd_Click(object sender, RoutedEventArgs e)
        {
            UInputNumberTextBox inputText = this as UInputNumberTextBox;
            inputText.Text += 1;
        }

        private void BtnSubtract_Click(object sender, RoutedEventArgs e)
        {
            UInputNumberTextBox inputText = this as UInputNumberTextBox;
            inputText.Text -= 1;
        }
    }

2.2 样式操作:

csharp 复制代码
<SolidColorBrush x:Key="PrimaryBackgroundColor" Color="#FFCFD6E5"/><!--定义颜色-->
    <SolidColorBrush x:Key="TextBox.MouseOver.Border" Color="#FF7EB4EA"/>
    <SolidColorBrush x:Key="TextSecundaryColor" Color="#FF4E85BD"/>
    <!--<FontFamily x:Key="TextSecundaryColor" fa="#FF569DE5"/>-->

    <Style x:Key="ControNumberTB" TargetType="ControlSet:UInputNumberTextBox">
        <Setter Property="Background" Value="{DynamicResource PrimaryBackgroundColor}" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ControlSet:UInputNumberTextBox">

                    <Border
                        Width="{TemplateBinding Width}"
                        Height="{TemplateBinding Height}"
                        BorderBrush="{DynamicResource PrimaryBackgroundColor}"
                        BorderThickness="1">
                        <StackPanel Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Orientation="Horizontal" >

                            <Grid Width="{TemplateBinding Width}">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="2*" />
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>

                                <Button
                                    x:Name="btnSubtract"
                                    Grid.Column="0"
                                    Width="{TemplateBinding Height}"
                                    Height="{TemplateBinding Height}"
                                    HorizontalAlignment="Left"
                                    VerticalAlignment="Center"
                                    Background="{DynamicResource PrimaryBackgroundColor}"
                                    BorderThickness="0,0,0,0"
                                    Content="&#xf068;"
                                    Cursor="Hand"
                                    FocusVisualStyle="{x:Null}"
                                    FontFamily="{DynamicResource  HgFont}"
                                    Foreground="{DynamicResource TextSecundaryColor}" /><!--减号-->

                                <TextBox
                                    Grid.Column="1"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Background="Transparent"
                                    BorderThickness="0"
                                    FocusVisualStyle="{x:Null}"
                                    FontSize="{TemplateBinding FontSize}"
                                    Foreground="{TemplateBinding Foreground}"
                                    Text="{Binding Text, RelativeSource={RelativeSource AncestorType=ControlSet:UInputNumberTextBox}, Mode=TwoWay}" />

                                <Button
                                    x:Name="btnAdd"
                                    Grid.Column="2"
                                    Width="{TemplateBinding Height}"
                                    Height="{TemplateBinding Height}"
                                    HorizontalAlignment="Right"
                                    VerticalAlignment="Center"
                                    Background="{DynamicResource PrimaryBackgroundColor}"
                                    BorderThickness="0,0,0,0"
                                    Content="&#xf067;"
                                    Cursor="Hand"
                                    FocusVisualStyle="{x:Null}"
                                    FontFamily="{ DynamicResource  HgFont}"
                                    Foreground="{DynamicResource TextSecundaryColor}" /> <!--加号-->
                            </Grid>
                        </StackPanel>
                    </Border>

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style> 

3.引用在界面XAML中。

引用地址:

xmlns:自定义 = "clr-namespace:地址

csharp 复制代码
 xmlns:ControlSet="clr-namespace:海王牌位系统.CommonInMy.Controls"

引用

csharp 复制代码
  <ResourceDictionary Source="../../CommonInMy/Styles/UInputNumberTextBoxStyle.xaml"/>

界面定义,本关键字 加名称

csharp 复制代码
 <ControlSet:UInputNumberTextBox  Grid.Row="6" Grid.Column="1" Width="200"  Height="30"  Margin="0,0,0,10"  FontSize="16"  Style="{DynamicResource ControNumberTB }"  Text="1" />

本单元参考了

https://blog.csdn.net/hisxiwu/article/details/129886874

相关推荐
月落.9 小时前
WPF的<ContentControl>控件
wpf
就是有点傻9 小时前
WPF中的依赖属性
开发语言·wpf
wangnaisheng9 小时前
【WPF】把一个Window放在左上角/右上角顶格显示
wpf
WineMonk9 小时前
.NET WPF CommunityToolkit.Mvvm框架
.net·wpf·mvvm
月落.9 小时前
WPF中的INotifyPropertyChanged接口
wpf
界面开发小八哥9 小时前
界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置
.net·wpf·界面控件·devexpress·ui开发
平凡シンプル9 小时前
WPF 打包
wpf
VickyJames9 小时前
基于XAML框架和跨平台项目架构设计的深入技术分析
wpf·开源分享·unoplatform·winui3·项目架构
冷眼Σ(-᷅_-᷄๑)12 小时前
WPF缩放动画和平移动画叠加后会发生什么?
wpf·动画
△曉風殘月〆15 小时前
WPF MVVM入门系列教程(二、依赖属性)
c#·wpf·mvvm