0
色を選択するためのポップアップウィンドウを作成しようとしています。ポップアップは、チューザーボタンを押したときに開き、色が選択されたとき、またはユーザーがその領域の外側をクリックしたときに閉じるようになっています。これは、ポップアップが初めて開くときに機能します。しかし、初めてポップアップを開くと、再び開くことはありません。概要WPFポップアップが初回起動後に開かない
選択]ボタンクラス選択ボタンの
public class RCTPaletteChooserButton : Button {
public Popup popup { get { return GetTemplateChild("popup") as Popup; } }
public RCTPaletteChooser chooser { get { return GetTemplateChild("chooser") as RCTPaletteChooser; } }
static RCTPaletteChooserButton() {
DefaultStyleKeyProperty.OverrideMetadata(typeof(RCTPaletteChooserButton),
new FrameworkPropertyMetadata(typeof(RCTPaletteChooserButton)));
}
public override void OnApplyTemplate() {
chooser.PaletteSelected += OnPaletteSelected;
base.OnApplyTemplate();
}
private void OnPaletteSelected(object sender, PaletteEventArgs e) {
popup.IsOpen = false;
RemapColor = e.RemapColor;
RaiseEvent(new PaletteEventArgs(PaletteSelectedEvent, e.RemapColor));
}
// None of these 3 overrides work
protected override void OnMouseDown(MouseButtonEventArgs e) {
RCTControls.PlayClick();
popup.IsOpen = true;
base.OnMouseDown(e);
}
protected override void OnMouseUp(MouseButtonEventArgs e) {
popup.IsOpen = true;
base.OnMouseUp(e);
}
protected override void OnLostMouseCapture(MouseEventArgs e) {
popup.IsOpen = true;
base.OnLostMouseCapture(e);
}
}
コンテンツテンプレート。
<Style TargetType="{x:Type local:RCTPaletteChooserButton}">
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Width" Value="12"/>
<Setter Property="Height" Value="12"/>
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:RCTPaletteChooserButton}">
<Grid>
<Image x:Name="image" Width="12" Height="12"/>
<Popup x:Name="popup" PlacementTarget="{Binding ElementName=image}"
Placement="Bottom" AllowsTransparency="True" StaysOpen="False">
<local:RCTPaletteChooser x:Name="chooser" Focusable="False"/>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>