0

ポップアップまたはツールチップを使用して、ドロップダウンの横にいくつかのボタンを表示する必要があるという要件があります。たとえば、ツールチップの Contnet にボタンを追加し、ユーザーがマウスをドロップダウンの上に置いたときに表示します。

ただし、ツールチップは、マウス ポインターがドロップダウン上にある間だけ開いたままになります。したがって、ツールチップを設定してそれに 2 つのボタンを追加すると、ユーザーはツールチップ内のボタンをクリックする機会がありません。マウスをドロップダウンから離す必要があるためです。ツールチップが消えます。

ユーザーがマウスをドロップダウンから離した後でも、ツールチップを一定時間開いたままにし、理想的にはツールチップがフォーカスを受け取る限りツールチップを開いたままにする方法はありますか?

コード:

<Style x:Key="ToolTipStyle" TargetType="ToolTip">
            <Setter Property="Placement" Value="Right"/>
        </Style>

      <ToolTip x:Key="YourToolTip" Style="{StaticResource ToolTipStyle}">
        <StackPanel Background="Yellow" Orientation="Horizontal">
            <Button Content="Yes"/>
            <Button Content="No"/>
        </StackPanel>
    </ToolTip>

        <Style x:Key="DropDownStyle" TargetType="Controls:RadComboBox">
            <Setter Property="ToolTip" Value="{StaticResource YourToolTip}"/>
            <Setter Property="ToolTipService.InitialShowDelay" Value="1000"/>
            <Setter Property="ToolTipService.ShowDuration" Value="2000"/>
            <Setter Property="ToolTipService.BetweenShowDelay" Value="10000"/>
        </Style>

 <Controls:RadComboBox x:Name="mydropDown"  Style="{StaticResource DropDownStyle}" ItemsSource="{StaticResource MyItems}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100">

        </Controls:RadComboBox>

注:私は.NET 3.5を使用しています

EDIT:ポップアップコントロールも問題ありませんが、ドロップダウンにフォーカスがなくなったときにポップアップ内のボタンをクリックする方法という元の質問が残っています(ポップアップの IsOpen が IsMouseOver プロパティにバインドされているという前提で)。

ありがとう -マイク

4

1 に答える 1

2

ユーザーがコンボボックスに近づくたびにこれらのボタンを表示する必要がある場合、浮動ポップアップまたはツールチップを使用するのはおそらく間違った UI パラダイムであり、コンボボックスがあるツールバーにボタンを追加するか、コンボボックスを再テンプレート化して追加する必要があります。ボタン (ただし、これも不格好になる可能性があります)。

モデル内の特定の値のセットが設定されている場合にのみボタンを表示する必要がある場合は、ページまたはユーザー コントロールの隅に小さなキャンバスを追加して、その z オーダーが他のコントロールよりも上になるようにし、独自のツール ヒントを描画することを検討してください。ボタンなどを使用して、モデルの値によってトリガーされる不透明度をアニメーション化します。不透明度が0の場合、アイテムをクリックできず、他のコントロールの邪魔になると思います。

そのすべてを UserControl でラップできます。キャンバス内のアイテムはクリップされないため、これが機能します。この方法でカスタム ポップアップ コンテキスト メニュー コントロールを作成しました。これは、キャンバスを実行時に人工的にビジュアル ツリーに挿入する (AJAX のようなものです)。

または、コンボボックス コントロールをサブクラス化し、ボタンやテキストなどをバインドするプロパティを追加し、キャンバスなどを新しいカスタム テンプレートに追加し、部品と状態を使用してそれを出し入れすることで、同様のことを行うことができます。見る。このルートは、このコントロールを何度も再利用する必要がある場合に最適です。

要するに、簡単ではないと思いますし、デザインを考え直せば手間が省けそうです。

于 2013-07-26T09:22:21.607 に答える