проблемы остановки AdornerDecorator и вкладки

голоса
3

Я использую IDataErrorInfo для проверки и указать ошибки в моих текстовых полях. Я нахожу, что я должен вкладке один раз для текстового поля и один раз для adornerdecorator.

У меня есть шаблон об ошибке:

<ControlTemplate x:Key=ErrorTemplate>
        <StackPanel KeyboardNavigation.IsTabStop=False >
        <Border KeyboardNavigation.IsTabStop=False  BorderBrush=Red BorderThickness=1 Padding=2 CornerRadius=2>
            <AdornedElementPlaceholder KeyboardNavigation.IsTabStop=False />
        </Border>
        </StackPanel>                
    </ControlTemplate>

шаблон текстового поля:

<Style x:Key=TextBoxInError TargetType={x:Type TextBox}>
        <Setter Property=KeyboardNavigation.TabNavigation Value=None/>
        <Setter Property=FocusVisualStyle Value={x:Null}/>
        <Setter Property=Margin Value=0,5,0,5/>
        <Setter Property=AllowDrop Value=true/>
        <Setter Property=HorizontalContentAlignment Value=left/>
        <Setter Property=Template>
            <Setter.Value>
                <ControlTemplate TargetType={x:Type TextBox}>
                    <Grid  KeyboardNavigation.IsTabStop=False >
                        <Border  KeyboardNavigation.IsTabStop=False x:Name=Border Background={DynamicResource WindowBackgroundBrush} BorderBrush={DynamicResource SolidBorderBrush} BorderThickness=1 Padding=2 CornerRadius=2>
                            <ScrollViewer IsTabStop=False Margin=0 x:Name=PART_ContentHost Style={DynamicResource SimpleScrollViewer} Background={TemplateBinding Background}/>
                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property=Validation.HasError Value=true>
                            <Setter Property=ToolTip Value={Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors), Converter={StaticResource errorConverter}}/>
                        </Trigger>
                        <Trigger Property=IsEnabled Value=false>
                            <Setter Property=Foreground Value=Gray/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

и объявить текстовое поле, как это:

<AdornerDecorator  KeyboardNavigation.IsTabStop=False >
<TextBox Margin=5,5,5,3 x:Name=txtName IsEnabled={Binding EditMode} Validation.ErrorTemplate={StaticResource ErrorTemplate}
 Text={Binding ApplicationName, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True} 
 Height=25 MaxLength=50 MaxLines=1 Style={StaticResource TextBoxInError}/>
 </AdornerDecorator>

Если Adorner круглый один текстовое поле, как указано выше, то я вкладке раз оставить текстовое поле и один раз, чтобы выйти из «красы» (кажется) Если у меня есть Adorner вокруг StackPanel текстовых полей, то я вкладке один раз для текста коробки затем вернуться через все «украшения», в свою очередь. При обходе через украшения фокус идет на красной границе, определенной в шаблоне управления ..

есть идеи?

благодаря

Задан 10/12/2008 в 01:20
источник пользователем
На других языках...                            


1 ответов

голоса
6

Добавьте к этому разделу ресурсов окна:

<Style TargetType="{x:Type Control}">
    <Setter Property="Focusable" Value="False"/>
</Style>

Для получения дополнительной информации посмотрите на моем блоге: http://www.nbdtech.com/blog/archive/2008/05/25/WPF-Problems-with-Keyboard-Focus-When-Using-Validation.aspx

Ответил 10/12/2008 в 09:39
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more