它由标签,作为文本框可视边界的边框和该边框内的文本框组成.
文本框本身的边框不可见.
我的问题是这样的:当自定义控件在UI中“标签”时,控件获取KeyboardFocus,但文本框本身没有.这会导致闪烁的光标不显示.
我需要知道如何将焦点从控件模板中的触发器传递到边框中包含的文本框,名为displayText.
我尝试使用FocusManager将displayText设置为聚焦元素,但这不起作用.
任何想法,想法或建议将不胜感激.如果您需要更多信息,请告诉我.
控制模板:
<GrID SnapsToDevicePixels="True" UseLayoutRounding="True"> <GrID.ColumnDeFinitions> <ColumnDeFinition WIDth="*"/> <ColumnDeFinition WIDth="auto"/> </GrID.ColumnDeFinitions> <Label x:name="floatingLabel" Template="{DynamicResource LabelControlTemplate1}" Content="{Binding LabelText,relativeSource={relativeSource Mode=TemplatedParent}}" IsHitTestVisible="False" Panel.ZIndex="2" Background="White" Height="15" VerticalContentAlignment="Center" padding="3,3,0" HorizontalAlignment="left" FontFamily="Segoe UI" FontSize="{Binding LabelFontSize,relativeSource={relativeSource TemplatedParent}}" Foreground="{DynamicResource floatingLabelTextBox.Label.Foreground}" VerticalAlignment="Center"> <Label.Tag> <sys:Double>0.0</sys:Double> </Label.Tag> <Label.margin> <MultiBinding Converter="{StaticResource floatingLabelmarginConverter}"> <Binding Path="Tag" relativeSource="{relativeSource Self}" /> <Binding Elementname="border" Path="ActualHeight" /> </MultiBinding> </Label.margin> </Label> <border x:name="border" Height="{Binding TextBoxHeight,relativeSource={relativeSource TemplatedParent}}" borderBrush="{TemplateBinding borderBrush}" borderThickness="{TemplateBinding borderThickness}" Background="{TemplateBinding Background}" CornerRadius="3" SnapsToDevicePixels="True" Panel.ZIndex="0" VerticalAlignment="Bottom"> <GrID x:name="GrIDContainer" WIDth="{Binding Elementname=border,Path=ActualWIDth}" margin="10,0"> <TextBox x:name="displayText" Text="{Binding relativeSource={relativeSource TemplatedParent},Path=FormattedPhoneNumber,StringFormat={}{0:(###)###-####},UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" FontWeight="{TemplateBinding FontWeight}" Foreground="{TemplateBinding Foreground}" WIDth="{Binding Elementname=border,Path=ActualWIDth}"> <TextBox.Template> <ControlTemplate targettype="{x:Type TextBox}"> <ScrollVIEwer x:name="PART_ContentHost" HorizontalAlignment="Stretch" margin="{TemplateBinding padding}" UID="ScrollVIEwer_1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </ControlTemplate> </TextBox.Template> </TextBox> </GrID> </border></GrID>
触发:
<Trigger Property="IsKeyboardFocused" Value="True"> <Setter Property="FocusManager.FocusedElement" Value="{Binding Elementname=displayText}" /> </Trigger>解决方法 尝试将Focusable =“False”添加到Label.
我试图将你的XAML复制到一个窗口并运行它,但显然还有一些其他的东西,我需要它才能让它工作.
总结以上是内存溢出为你收集整理的c# – 在控件模板中设置文本框焦点全部内容,希望文章能够帮你解决c# – 在控件模板中设置文本框焦点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)