我正在创建一个自定义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>
Run Code Online (Sandbox Code Playgroud)
编辑: 我稍微缩小了代码范围.看来,如果我将一个带有文本框的Popup直接放在CellEditingTemplate中,那么文本框得到的焦点就没问题了.当我将该代码移动到UserControl时,我在编辑单元格时无法再选择文本框.
UserControl是否以焦点做了一些有趣的事情?
问题是当我在datagrid中编辑单元格时,我得到了用户控件,但我无法单击TextBox searchTextBox.当我点击它时,弹出窗口关闭,单元格返回默认值.
我已经尝试复制并粘贴用户控件中的所有代码,并将其直接粘贴到CellEditingTemplate中,并以它应该的方式进行交互.
我只是想知道UserControl是否做了一些奇怪的事情,阻止弹出窗口获得焦点,因为它直接放在CellEditingTemplate中时按预期工作?
谢谢,劳尔