8

私の WPF アプリケーションでは、メニュー項目にテキスト ボックスが必要です。次のコードを使用してこれを行うことができました。

<Menu Height="23" HorizontalAlignment="Stretch" Name="MainMenu" VerticalAlignment="Top">
    <MenuItem Header="File">
        <MenuItem Header="Exit" Click="menuItemExit_Click" />
    </MenuItem>
    <MenuItem Header="Settings">
        <MenuItem Header="Some setting" IsCheckable="True" />
        <Separator />
        <MenuItem>
            <MenuItem.Header>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <Label Content="Some value:" Margin="0,3,6,0" Padding="0" />
                    <TextBox Margin="0,0,0,6" Grid.Column="1" />
                </Grid>
            </MenuItem.Header>
        </MenuItem>
    </MenuItem>
</Menu>

このコードは期待どおりにメニュー項目を表示しますが、テキスト ボックスに何らかの値を入力し始めてから、テキスト ボックスのメニュー項目から (クリックではなく) マウスを離すと、テキスト ボックスはフォーカスを失い、クリックするまで入力を続けることができなくなります。もう一度テキストボックスに。WinForms のテキスト ボックス メニュー項目と同じ動作を実現するにはどうすればよいですか? つまり、ユーザーがテキスト ボックスの外側をクリックするか、Tab キーを押した場合にのみ、テキスト ボックスはフォーカスを失います。

前もって感謝します。

4

3 に答える 3

7

私が書いたように、メニューコントロールをどのように使用するかわかりません。しかし、おそらくこのコードを切り取って、あなたを助けたり、ヒントを与えたりすることができます:

<TextBox Margin="0,0,0,6" Grid.Column="1" PreviewLostKeyboardFocus="OnPreviewLostKeyboardFocus"/>

およびそれに応じた方法:

private void OnPreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
  {
     if (MainMenu.IsKeyboardFocusWithin)
     {
        e.Handled = true;
     }
  }
于 2013-03-19T13:22:44.593 に答える
0

たぶんこれが役立ちます:

    <MenuItem StaysOpenOnClick="True">
        <MenuItem.Header>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Label Content="Some value:" Margin="0,3,6,0" Padding="0" />
                <TextBox Margin="0,0,0,6" Grid.Column="1" />
            </Grid>
        </MenuItem.Header>
    </MenuItem>
于 2013-03-19T11:01:52.633 に答える