新しいカスタム コントロールを作成したいと考えています。これを達成する方法の手がかりを与えてくれるチュートリアルはほとんど見つかりませんでした。私が理解しているように、新しいカスタムコントロールの作成は常に現在のコントロールを拡張することによって行われ、階層の非常に基本的なレベルからコントロールを拡張することさえ可能です。たとえば、次のように拡張することもできます:
- UIElement
- FrameworkElement
- コントロール
- コンテンツ コントロール
- HeaderedContentControl
- アイテムコントロール
- セレクタ
- RangeBase
次のチュートリアルに書かれているとおり: http://wpftutorial.net/HowToCreateACustomControl.html
そこで、チュートリアルに従ってカスタム コントロール ライブラリ タイプの新しいプロジェクトを作成し、汎用の .xaml とコード ビハインドを取得しました。ここまでは順調ですね。
私が区別できるイベントには 3 つのタイプまたはカテゴリがあります。
コントロールを使用するウィンドウ (またはコンテナー) によって消費されるイベント: これらは、外部に公開したいイベントです。それらをどのように書くのですか?
コントロール自体に関連し、外部に公開されていないイベント。たとえば、マウスが自分のコントロールの上にあり、それに反応したい場合などです。XAML でそれを行うことができます。
<ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter Property="Fill" TargetName="LeftTraingularIndicator"> <Setter.Value> <SolidColorBrush Color="Yellow" /> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers>
もちろん、ControlTemplate に x:name="LeftTraingularIndicator" という名前の fill プロパティを持つ要素があると仮定します。
質問:
ここで、XAML で IsMouseDown に反応したいと考えています。それ、どうやったら出来るの?「IsMouseDown」トリガーはありません。さらに、コードビハインドでそれに反応したい場合はどうすればよいですか? さらに、コード ビハインドから LeftTraingularIndicator "Fill" を変更したい場合はどうすればよいでしょうか?
- ControlTemplate の視覚的な構成の一部であるサブ要素に関連するイベント。たとえば、XAML やコード ビハインドで「LeftTraigularIndicator」の「IsMouseOver」に反応したい場合はどうすればよいでしょうか? たぶん両方。
私は今2日間試みています...物事がどのように機能するかについての理解に何かが欠けていると感じています。これらの質問を深く説明するチュートリアルは見つかりませんでした。
ここで浮かび上がった質問のそれぞれについて、数行の例を見てみたいと思います。
ありがとう。