文本框的默认行为

时间:2015-04-14 18:16:54

标签: c# wpf xaml

我有一个自定义控件,它是一个文本框,框内有两个按钮。

enter image description here

我希望框架能够显示典型的文本框边框行为。目前,它只有一个黑色边框。 有一个简短的方法,还是需要200行XAML?

(我已经找到了一些例子,例如来自MS的ComboBoxStyles-Example但是......这些确实使用了200行XAML。

这是IntegerSpinControl的样式:

    <Style TargetType="{x:Type cc:IntegerSpinControl}">
    <Setter Property="HorizontalAlignment" Value="Center" />
    <Setter Property="VerticalAlignment" Value="Center" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type cc:IntegerSpinControl}">

                <Border BorderThickness="1" BorderBrush="Black">
                    <DockPanel LastChildFill="True" HorizontalAlignment="Stretch">

                        <Grid DockPanel.Dock="Right" x:Name="grid1"
                          Grid.Column="1"
                          HorizontalAlignment="Center"
                          VerticalAlignment="Center">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <RepeatButton Grid.Row="0"
                                      Grid.Column="1"
                                      Width="22"
                                      Height="10"
                                      Padding="0"
                                      BorderThickness="0"
                                      Command="{x:Static cc:IntegerSpinControl.IncreaseCommand}">
                                <RepeatButton.Content>
                                    <Rectangle Width="16"
                                           Height="5"
                                           Fill="{StaticResource brush.scroll.up}" />
                                </RepeatButton.Content>
                            </RepeatButton>
                            <RepeatButton Grid.Row="1"
                                      Grid.Column="1"
                                      Width="22"
                                      Height="10"
                                      Padding="0"
                                      BorderThickness="0"
                                      Command="{x:Static cc:IntegerSpinControl.DecreaseCommand}">
                                <RepeatButton.Content>
                                    <Rectangle Width="16"
                                           Height="5"
                                           Fill="{StaticResource brush.scroll.down}" />
                                </RepeatButton.Content>
                            </RepeatButton>
                        </Grid>
                        <TextBox DockPanel.Dock="Left"
                             BorderThickness="0"
                             HorizontalAlignment="Stretch"
                             Grid.Row="0"
                             Grid.Column="0"
                             Width="Auto"
                             Margin="0,0,1,0"
                             VerticalAlignment="Center"
                             IsReadOnly="True"
                             Text="{Binding RelativeSource={RelativeSource TemplatedParent},
                                            Path=FormattedValue,
                                            Mode=OneWay}" />

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

1 个答案:

答案 0 :(得分:1)

扩展WPF工具包中已有一个可能正在寻找的控件:

IntegerUpDown Control

也许你可以使用它?

BTW:工具包中还有DecimalDouble版本。

话虽这么说,如果你必须使用自己的自定义控件,你必须自己创建TemplatesStyles,但是你可能会从Windows默认值中大量复制。