第一次发帖提问:WPF重写文本框使其具有数字键盘的案例

Shawlj 2017-09-08 09:22:06
问题描述如下:在自定义控件中有个文本框TextBox控件,当文本框获取焦点后,下方显示一个数字键盘,类似日期控件显示效果。怎么实现上述效果?或者推荐学习教程也可以。第一次发帖不规范的地方请提出。谢谢!
...全文
899 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawlj 2017-09-08
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
其实用个combobox会更容易,类似:

<ComboBox Width="200">
         <ComboBox.ItemsPanel>
           <ItemsPanelTemplate>
             <UniformGrid Columns="3"></UniformGrid>
           </ItemsPanelTemplate>
         </ComboBox.ItemsPanel>
         <ComboBoxItem>1</ComboBoxItem>
         <ComboBoxItem>2</ComboBoxItem>
          <ComboBoxItem>3</ComboBoxItem>
         <ComboBoxItem>4</ComboBoxItem>
          <ComboBoxItem>5</ComboBoxItem>
         <ComboBoxItem>6</ComboBoxItem>
      </ComboBox>
我还是用popup实现吧,主要对这个不太熟,慢慢琢磨吧。
exception92 2017-09-08
  • 打赏
  • 举报
回复
其实用个combobox会更容易,类似:

<ComboBox Width="200">
         <ComboBox.ItemsPanel>
           <ItemsPanelTemplate>
             <UniformGrid Columns="3"></UniformGrid>
           </ItemsPanelTemplate>
         </ComboBox.ItemsPanel>
         <ComboBoxItem>1</ComboBoxItem>
         <ComboBoxItem>2</ComboBoxItem>
          <ComboBoxItem>3</ComboBoxItem>
         <ComboBoxItem>4</ComboBoxItem>
          <ComboBoxItem>5</ComboBoxItem>
         <ComboBoxItem>6</ComboBoxItem>
      </ComboBox>
exception92 2017-09-08
  • 打赏
  • 举报
回复
你这样都没输入框了
Shawlj 2017-09-08
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
用Popup控件做一个,控制它的IsOpen属性,控制位置。
我通过重写Textbox的ControlTemplate方式这样做的:
<TextBox>
            <TextBox.Resources>
                <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource form_textbox}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type TextBox}">
                                <StackPanel>
                                    <Grid x:Name="LayoutRoot" ButtonBase.Click="LayoutRoot_Click" >
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition/>
                                            <ColumnDefinition/>
                                            <ColumnDefinition/>
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="0.2*"/>
                                            <RowDefinition Height="0.2*"/>
                                            <RowDefinition Height="0.2*"/>
                                            <RowDefinition Height="0.2*"/>
                                            <RowDefinition Height="0.2*"/>
                                            <RowDefinition Height="0.2*"/>
                                        </Grid.RowDefinitions>
                                        <Button Content="1" Margin="2" x:Name="key1" Grid.Row="1" />
                                        <Button Content="2" Margin="2" Grid.Column="1" x:Name="key2" Grid.Row="1" />
                                        <Button Content="3" Margin="2" Grid.Column="2" x:Name="key3" Grid.Row="1" />

                                        <Button Content="4" Margin="2" Grid.Row="2" x:Name="key4" />
                                        <Button Content="5" Margin="2" Grid.Row="2" Grid.Column="1" x:Name="key5" />
                                        <Button Content="6" Margin="2" Grid.Row="2" Grid.Column="2" x:Name="key6" />

                                        <Button Content="7" Margin="2" Grid.Row="3" x:Name="key7" />
                                        <Button Content="8" Margin="2" Grid.Row="3" Grid.Column="1" x:Name="key8" />
                                        <Button Content="9" Margin="2" Grid.Row="3" Grid.Column="2" x:Name="key9" />

                                        <Button Content="*" Margin="2" Grid.Row="4" x:Name="keyStar" />
                                        <Button Content="0" Margin="2" Grid.Row="4" Grid.Column="1" x:Name="key0" />
                                        <Button Content="#" Margin="2" Grid.Row="4" Grid.Column="2" x:Name="keySharp" />

                                        <Button Content="退格" Margin="2" Grid.Row="5" x:Name="keyBackspace" >
                                            <Button.Background>
                                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                                    <GradientStop Color="#FF4FDE43" Offset="0"/>
                                                    <GradientStop Color="#FF4EB832" Offset="0.5"/>
                                                    <GradientStop Color="#FF4FDE43" Offset="1"/>
                                                </LinearGradientBrush>
                                            </Button.Background>
                                        </Button>
                                        <Button Content="清除" Margin="2" Grid.Row="5" Grid.Column="1" x:Name="keyClear" />
                                        <Button Content="确定" Margin="2" Grid.Row="5" Grid.Column="2" x:Name="keyOk">
                                            <Button.Background>
                                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                                    <GradientStop Color="#FFFFCE49" Offset="0"/>
                                                    <GradientStop Color="#FFF9B319" Offset="0.5"/>
                                                    <GradientStop Color="#FFFFCE49" Offset="1"/>
                                                </LinearGradientBrush>
                                            </Button.Background>
                                        </Button>
                                    </Grid>
                                </StackPanel>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsMouseOver" Value="True">
                                        
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TextBox.Resources>
        </TextBox>
exception92 2017-09-08
  • 打赏
  • 举报
回复
用Popup控件做一个,控制它的IsOpen属性,控制位置。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧