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

相关推荐
可喜~可乐5 小时前
C# WPF开发
microsoft·c#·wpf
界面开发小八哥7 小时前
DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(二)
ui·.net·wpf·界面控件·devexpress·ui开发
界面开发小八哥7 小时前
「实战应用」如何用图表控件SciChart WPF实现应用程序的DPI感知?
信息可视化·wpf·数据可视化·图表·scichart wpf·scichart
明耀2 天前
WPF TabControl 设置item不能点击
wpf
军训猫猫头2 天前
20.抽卡只有金,带保底(WPF) C#
ui·c#·wpf
明耀2 天前
WPF 设置平均布局 如果隐藏的话,能够自动扩展
wpf
晚安苏州2 天前
WPF DataTemplate 数据模板
wpf
甜甜不吃芥末3 天前
WPF依赖属性详解
wpf
Hat_man_3 天前
WPF制作图片闪烁的自定义控件
wpf
晚安苏州5 天前
WPF Binding 绑定
wpf·wpf binding·wpf 绑定