0

私はこれに完全な初心者なので、これがどのように機能するかについて頭を包むのに本当に苦労しています。

基本的に、使用しているメインページがあり、XAML内にメニューを作成しました


私が持っているのは、findコマンドを送信しようとしているTextBoxを含むドキュメント(DummyDoc)です。

私はこれをあらゆる方法で試し、グーグルで検索しましたが、私はそれをうまく機能させることができないようで、正しい方向にプッシュすることでいくつかの助けを使うことができます

メインフォーム

 <Window>

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="clr-namespace:DMC_Robot_Editor"
        xmlns:local="clr-namespace:DMC_Robot_Editor.GUI" 

    <Menu>
    <MenuItem Header="_Edit">
     <MenuItem Header="_Cut"/>
    </MenuItem>
    <MenuItem/>
    <Grid>
     <local:DummyDoc x:Name="_Editor"/>
    </Grid>
    </Window>

それが私が使っているメインフォームです。次に、2番目のドキュメント「DummyDoc」があります

<ad:DocumentContent x:Name="document" x:Class="DMC_Robot_Editor.Controls.DummyDoc"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock"
        xmlns:local="clr-namespace:DMC_Robot_Editor.Controls" 
        xmlns:ed="schemas.microsoft.com/expression/2010/drawing"
        Title="Window1" Height="300" Width="300"
        IsVisibleChanged="Is_VisibleChanged"  PropertyChanged="document_PropertyChanged">
    <Grid>

        <Menu >
            <MenuItem Header="_File">
                <MenuItem Header="was here"/>
            </MenuItem>

        </Menu>
        <local:Editor x:Name="source" IsVisibleChanged="Is_VisibleChanged" TextChanged="TextChanged" UpdateFunctions="raiseupdated" />
        <local:Editor x:Name="data" Visibility="Hidden"  IsVisibleChanged="Is_VisibleChanged" TextChanged="TextChanged"      UpdateFunctions="raiseupdated"/>
    </Grid>
    </ad:DocumentContent>

DummyDocは、継承されたエディターを含むウィンドウです。

<avalonedit:TextEditor
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit" 
             x:Class="DMC_Robot_Editor.Controls.Editor" 
             x:Name="editor"
             mc:Ignorable="d" 
             d:DesignHeight="300"
    d:DesignWidth="300" 

    TextChanged="Text_Changed"
    IsVisibleChanged="raiseUpdate"
    MouseMove="Mouse_Move"
    MouseHover="Mouse_Hover"

    MouseHoverStopped="Mouse_Hover_Stopped" KeyUp="editor_KeyUp">


    </avalonedit:TextEditor> 

私の最終的な質問は、WPFバインディングを使用して、メインフォームからの「カット」アクションでテキストボックスのcut()メソッドを開始するにはどうすればよいですか?

コードビハインドで次のことをしているので、テキストボックスを書きました

  partial class DummyDoc:DocumentContent
    {
    public Editor TextBox{get;set;}
     private void Is_VisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if (sender is Editor)
                this.TextBox = sender as Editor;

            if ((VisibilityChanged != null) && (TextBox != null))
                raiseupdated(TextBox, new FunctionEventArgs(this.TextBox.Text));
        }
    }
4

1 に答える 1

1

ElementName指定した文字列識別子を使用している要素を検索して、要素を検索します。

TextBoxタグを付けx:Name="local:TextBox"ましたか?

「local:TextBox」を使用して、ワイヤーを交差させたと思います。

手始めに...それは名前空間内の要素タイプを参照するために使用される構文です....それは「TextBoxローカル名前空間内のタイプ」を意味します.....それは無効です(またはむしろ同じ意味ではありません)使用しているコンテキストでは、「識別子」文字列を割り当てるだけです。

それで....

CommandTarget="{Binding ElementName=textboxFind}"

..。

<TextBox x:Name="textboxFind"  ..... />

より適切でしょう。


更新(質問が明確にされていることに照らして):

メニュー項目で「コマンド」を指定する必要があります。このコマンドは、そのメニュー項目を選択したときに表示されます。

次に、TextEditorにフォーカスがある場合(...したがってコマンドターゲットです...)....その後、Cutコマンドが表示されます。

Avalon Editorは、よく知られている「ApplicationCommands」、つまり切り取り、コピー、貼り付けなどを処理できると思います。

<MenuItem Header="_Cut" Command="ApplicationCommands.Cut">
于 2012-09-04T23:19:27.777 に答える