zoukankan      html  css  js  c++  java
  • 获取资源字典的控件模板的控件实例方法

    MessageBoxGeneric.xaml

    <ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:JetSun.Presentation" 
        xmlns:js="clr-namespace:JetSun.Presentation.Markups">
        <Style TargetType="local:MessageBoxControl">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="local:MessageBoxControl">
                        <Grid FlowDirection="{Binding ContentFlowDirection}" MaxWidth="600">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="55" />
                                <RowDefinition Height="*" />
                                <RowDefinition Height="*" />
                                <RowDefinition Height="auto" />
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="auto" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
    
                            <Image Source="{Binding MessageImageSource}" HorizontalAlignment="Left" VerticalAlignment="Center" Height="32" Width="32" Margin="10 0 0 0" />
    
                            <TextBlock Text="{Binding Message}" Grid.RowSpan="2" Grid.Column="1" TextWrapping="Wrap" TextAlignment="Left" HorizontalAlignment="{Binding ContentTextAlignment}" VerticalAlignment="Center" Margin="10 10 10 10" />
    
                            <Border Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" BorderThickness="0 1 0 0" Margin="3">
                                <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0 0 5 0" >
                                    <Button Content="是" Visibility="{Binding YesNoVisibility}" Command="{Binding YesCommand}" IsDefault="{Binding IsYesDefault}" Margin="5 5 5 5"   Width="80" x:Name="PART_YesButton" IsTabStop="True" TabIndex="0"/>
                                    <Button Content="否" Visibility="{Binding YesNoVisibility}" Command="{Binding NoCommand}" IsDefault="{Binding IsNoDefault}" Margin="5 5 5 5"  Width="80" x:Name="PART_NoButton" IsTabStop="True" TabIndex="1" />
                                    <Button Content="确认" Visibility="{Binding OkVisibility}" Command="{Binding OkCommand}" IsDefault="{Binding IsOkDefault}" Margin="5 5 5 5" Width="80" x:Name="PART_OkButton" IsTabStop="True" TabIndex="2" />
                                    <Button Content="取消" Visibility="{Binding CancelVisibility}" Command="{Binding CancelCommand}" IsDefault="{Binding IsCancelDefault}" Margin="5 5 5 5"  Width="80" x:Name="PART_CancelButton" IsTabStop="True" TabIndex="3" />
                                </StackPanel>
                            </Border>
                        </Grid>
    
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>


    取出控件模板的控件实例方法:

        public class MessageBoxControl : Control
        {
            static MessageBoxControl()
            {
                DefaultStyleKeyProperty.OverrideMetadata(typeof(MessageBoxControl), new FrameworkPropertyMetadata(typeof(MessageBoxControl)));
            }
    
            Button _btnYes;
            Button _btnNo;
            Button _btnOk;
            Button _btnCancel;
            public override void OnApplyTemplate()
            {
                base.OnApplyTemplate();
    
                _btnYes = GetTemplateChild("PART_YesButton") as Button;
                _btnNo = GetTemplateChild("PART_NoButton") as Button;
                _btnOk = GetTemplateChild("PART_OkButton") as Button;
                _btnCancel = GetTemplateChild("PART_CancelButton") as Button;
            }
    
            protected override void OnGotFocus(RoutedEventArgs e)
            {
                MessageBoxViewModel model = this.DataContext as MessageBoxViewModel;
                if (model.IsYesDefault) { _btnYes.Focus(); }
                if (model.IsNoDefault) { _btnNo.Focus(); }
                if (model.IsOkDefault) { _btnOk.Focus(); }
                if (model.IsCancelDefault) { _btnCancel.Focus(); }
            }
        }

     

  • 相关阅读:
    博客园博客排版(js样式实例)
    vue项目iframe的传值问题
    纯css、js 的H5页面对接echarts
    css 在一定区域内滚动显示,不修改父级样式
    架构图以及vue的简介
    HTTP协议 详解
    mysql:The user specified as a definer ('xxx'@'%') does not exist 解决方法
    table-tree 表格树、树形数据处理、数据转树形数据
    记我在github上参与的Star增长最快的十万级项目。。。
    浏览器将URL变成一个屏幕上显示的网页的过程?
  • 原文地址:https://www.cnblogs.com/chriskwok/p/4829673.html
Copyright © 2011-2022 走看看