4

StackOverflow でここにある概念を使用します。が にバインドされいることに注意してください。ToggleButton.IsHitTestVisiblePopup.IsOpenStaysOpen="False"これは、 の外側のどこかに触れるPopupと、それが閉じることを意味するはずです。でも...

の をタッチ/クリックしてもListBoxItem、意図したようItemsControlに が閉じませんPopup。内の他の場所に触れると、閉じますPopup これがどのように設定されているかによると、それは合計されていないようです。

<Grid ClipToBounds="True">
    <Border Name="Root">
        <ToggleButton x:Name="PART_Toggle"
                  ClickMode="Release"
                  IsHitTestVisible="{Binding ElementName=PART_Popup,
                                             Path=IsOpen,
                                             Mode=OneWay,
                                             Converter={StaticResource BooleanInverter}}"/>
    </Border>
    <Popup x:Name="PART_Popup"
           IsOpen="{Binding ElementName=PART_Toggle,
                            Path=IsChecked}"
           PlacementTarget="{Binding ElementName=PART_Toggle}"
           StaysOpen="False">
        <Grid Background="Transparent">
            <Grid>
                <!-- Anything here (outside of the Item) -->
                <ItemsControl>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <!-- Anything in this item template works. The popup does not close -->
                            </Grid>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Grid>
            </Border>
        </Grid>
    </Popup>
</Grid>

何か案は?ありがとう。


編集:解決済み

から派生したカスタム コントロール内にあったため、これが発生していたことが判明しましたListBox。この質問をした時点では関係がないようでした、申し訳ありません。

4

2 に答える 2

1

これは、ListBox から派生したカスタム コントロール内にあったために発生していたことが判明しました。この質問をした時点では関係がないようでした、申し訳ありません。

于 2013-04-29T15:53:16.150 に答える
1

あなたの場合、問題はポップアップの位置またはサイズのいずれかだと思います。コードを試してみるとうまくいきましたが、ポップアップに設定Placement="Center"し、ポップアップ内のグリッドのサイズを設定する必要がありました。

前者がないと、ポップアップは内部に配置されませんでしたが、後者がないと、ポップアップのサイズはそのコンテンツのサイズになりました (つまり、クリックする外側がありませんでした)。

最初にポップアップの背景を赤などに設定して、ポップアップが実際に正しく配置され、サイズが調整されているかどうかを確認してください。

于 2013-04-26T21:33:07.377 に答える