Настройка фокуса на элемент управления в шаблоне ControlTemplate в WPF

В приложении яВ настоящее время у нас есть несколько пользовательских элементов управления с их шаблонами ControlTemplates, определенными в Generic.xaml.

Например, наше текстовое поле будет выглядеть примерно так:


    
        
            
                
                    
                        
                        
                            
                                
                            
                        
                    
                
            
        
    
    
    

В нашем приложении мы должны иметь возможность программно устанавливать фокус на конкретный элемент управления в шаблоне ControlTemplate.

В нашем коде C # мы можем добраться до конкретного "FieldTextBox» на основании наших данных. Как только мы получим правильный FieldTextBox, нам нужно будет установить фокус на фактический TextBox, содержащийся в ControlTemplate.

Лучшее решение, которое яМы придумали установить имя для основного элемента управления в каждом шаблоне элемента управления (в данном случае это 's TextBox), такой как "FocusableControl «.

Мой код (содержащийся в выделенном фрагменте кода для FieldTextBox) для установки фокуса на элемент управления будет выглядеть так:

    Control control = (Control)this.Template.FindName("FocusableControl", this);
    if (control != null)
    {
        control.Focus();
    }

Это решение работает. Однако кто-нибудь еще знает решение, которое было бы более эффективным, чем это?

Ответы на вопрос(2)

Ваш ответ на вопрос