我正在创建一个自定义的UserControl,用于在DataGrid编辑模板中使用。它看起来像这样:
<UserControl
x:Class="HR.Controls.UserPicker"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:tk="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBlock x:Name="PART_TextBox" Text="Hello WOrld" />
<Popup Width="234" Height="175" IsOpen="True" StaysOpen="True"
Placement="Bottom"
PlacementTarget="{Binding ElementName=PART_TextBox}"
>
<TextBox
x:Name="searchTextBox"
Text=">Enter Name<"/>
</Popup>
</Grid>
</UserControl>
编辑: 我已经缩小了代码范围。 看起来,如果我在CellEditingTemplate中直接放置带有文本框的弹出窗口,文本框就可以轻松获得焦点。但是当我将该代码移动到UserControl中时,在编辑单元格时就无法再选择文本框了。
UserControl是否对焦点进行了某些奇怪的处理?
问题在于,当我在数据网格中编辑单元格时,用户控件会显示出来,但我无法单击TextBox searchTextBox。当我单击它时,弹出窗口关闭并且单元格返回默认状态。
我尝试将用户控件内的所有代码复制并粘贴到CellEditingTemplate中,这样就可以按预期交互。
我只是想知道UserControl是否做了一些奇怪的事情,阻止弹出窗口获得焦点,因为直接放置在CellEditingTemplate中时可以正常工作。
谢谢, Raul