wp7: Пользовательский контроль с функциями - PullRequest
2 голосов
/ 19 марта 2011

Я пытаюсь создать собственный текстовый элемент управления для моего приложения WP7. По сути, я хочу, чтобы он имел функцию GotFocus, и я бы хотел, чтобы он имел номер InputScope

Я использую следующие ресурсы в качестве базы для создания пользовательского элемента управления в текстовом поле:

Я могу заставить текстовое поле отображаться в моем приложении, но я не могу заставить работать вызов GotFocus, не имея функции в приложении (которая побеждает цель).

Функция GotFocus, которую я обычно вызываю, также находится в классе genericTextbox. Как бы я назвал GotFocus и InputScope?

ResourceDictionary является следующим:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
    xmlns:local="clr-namespace:wp7CustomControlsLibrary">
    <Style TargetType="local:genericTextbox">
        <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/>
        <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
        <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/>
        <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/>
        <Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}"/>
        <Setter Property="SelectionBackground" Value="{StaticResource PhoneAccentBrush}"/>
        <Setter Property="SelectionForeground" Value="{StaticResource PhoneTextBoxSelectionForegroundBrush}"/>
        <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
        <Setter Property="Padding" Value="2"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:genericTextbox">
                    <Grid Background="Transparent">
                        <Border x:Name="EnabledBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="{StaticResource PhoneTouchTargetOverhang}">
                            <Grid>
                                <ContentControl x:Name="ContentElement" BorderThickness="0" HorizontalContentAlignment="Stretch" Margin="{StaticResource PhoneTextBoxInnerMargin}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="Stretch"/>
                            </Grid>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

1 Ответ

1 голос
/ 20 марта 2011

Я понял это. В основном я должен был добавить следующее к коду:

    public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
        GotFocus +=new RoutedEventHandler(OnTextboxInputWordGotFocus);

        this.InputScope = new System.Windows.Input.InputScope()
        {
            Names = { new InputScopeName() { NameValue = InputScopeNameValue.Number } }
        };

    }

Это работает так, как я хочу сейчас. Однако, если есть «лучшие способы» сделать это, я открыт для предложений.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...