我想实现一个 WPF CustomControl,即...
- 通常看起来像一个按钮并将浮点值显示为字符串
- 拖动按钮时,浮动值像虚拟滑块一样被操纵
- 单击该按钮时,它会被一个 TextBox 替换,并用当前值作为字符串预填充。可以编辑此文本。在 TextBox 外部单击或按回车键会将控件更改回 Button 并将编辑后的文本用作新值。
我们需要在高度简化的界面中使用此控件。虽然描述听起来有点奇怪,但对我们来说效果非常好。但出于性能原因,我们现在必须将当前实现作为 UserControl 重构为 CustomControl。
我让控件的滑块部分运行并设法显示附加到 Content DependencyProperty 的 TextBox。然而,遗憾的是,我无法从 ControlTemplate 访问这个 TextBox,它看起来大致如下:
<Style TargetType="{x:Type local:FloatEditButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:FloatEditButton}">
<Grid Margin="0">
<Viewbox VerticalAlignment="Center" HorizontalAlignment="{Binding RelativeSource={RelativeSource TemplatedParent},Path=HorizontalContentAlignment}" Margin="0">
<ContentPresenter Name="content" Margin="2" VerticalAlignment="Center" />
</Viewbox>
<TextBox x:Name="XTextBox" Visibility="Collapsed" Text="{Binding Content}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="EditingAsTextBox" Value="True">
<Setter TargetName="XTextBox" Property="Visibility" Value="Visible"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
任何想法,如何将其实现为 CustomControl?