У меня есть пользовательский элемент управления, который отображается как ячейка в сетке данных (Infragistics).Все ячейки отображаются с шаблоном только для чтения.Ячейки могут быть выбраны (предоставлено Infragistics).
Теперь, если пользователь нажимает, например, «3», я изменяю шаблон только для чтения на шаблон редактирования.Это прекрасно работает.
Шаблон редактирования содержит текстовое поле, которое должно иметь фокус после, а также получать нажатие клавиши, например.3. Проблема в том, что в то время, когда я получаю нажатие клавиши и меняю шаблон, он, конечно, еще не отображается.
Контроль
public class Cell
{
//dependency properties
public DataTemplate ReadOnlyTemplate;
public DataTemplate EditTemplate;
public DataTemplate CurrentTemplate;
OnPreviewKeyDown()
{
CurrentTemplate = EditTemplate;
}
}
Xaml
<Style TargetType="{x:Type local:Cell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Cell}">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ContentControl HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Content="{Binding DataContext, RelativeSource={RelativeSource Self}}"
ContentTemplate="{Binding CurrentTemplate, RelativeSource={RelativeSource TemplatedParent}}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я не могу использовать OnApplyTemplate
, потому что шаблон отображается непосредственно внутри ячейки, но у одного из детей.
Вот некоторые идеи, которые я предложилрешить
- собирать события нажатия клавиш до тех пор, пока шаблон не будет отрисован, а затем сфокусировать текстовое поле в шаблоне редактирования и вставить в него события нажатия клавиш
- «каким-то образом» поместить рендеринг вдиспетчер приоритетов и подождите «когда-нибудь», пока он не будет обработан, а затем выполните действия с графическим интерфейсом
Может ли кто-нибудь указать мне правильное направление?