WPF CustomControlを実装したいのですが、...
- 通常はボタンのように見え、float値を文字列として表示します
- ボタンをドラッグすると、フロート値が仮想スライダーのように操作されます
- ボタンをクリックすると、現在の値が文字列として事前に入力されたテキストボックスに置き換えられます。このテキストは編集できます。TextBoxの外側をクリックするか、Returnキーを押すと、コントロールがButtonに戻り、編集したテキストが新しい値として使用されます。
高度に合理化されたインターフェースでこの制御が必要です。説明は少し奇妙に聞こえますが、私たちにとっては驚くほどうまく機能します。ただし、パフォーマンス上の理由から、現在の実装をUserControlとしてCustomControlにリファクタリングする必要があります。
コントロールのスライダー部分を実行し、ContentDependencyPropertyにアタッチされた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として実装する方法はありますか?