2012-09-04 99 views
0

我是一個完整的Noob這樣即時通訊非常困難的時間包裝我的頭如何運作。命令綁定與WPF

基本上我有一個主頁使用即時通訊和XAML中我創建了一個菜單


我已經是一個文檔(DummyDoc),其中包含一個文本框其中,我試圖發送查找命令。

我用盡這所有可能的方法和GOOGLE了它,但我只是不能似乎得到它的工作對我來說,可能在正確的方向

主要形式使用一些幫助推

<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> 

這是我正在使用的主要形式。那麼我有我的第二個文件「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綁定,使從主窗體「剪切」行動發起的文本框的切割()方法?

我,因爲在代碼中寫文本框在它背後,即時通訊做以下

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)); 
     } 
    } 

回答

1

ElementName查找通過尋找其使用指定的字符串標識元素的元素。

你把x:Name="local:TextBox"放在你的TextBox標籤上了嗎?

我認爲你已經通過使用「本地:文本框」越過了你的電線。

對於初學者...這是用於引用名稱空間內的元素類型的語法....它意味着「類型TextBox在本地命名空間」.....它是無效的(或更確切地說,在你使用的上下文中,你的意思不一樣......你應該只分配一個「標識符」字符串。

所以....

CommandTarget="{Binding ElementName=textboxFind}" 

...

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

會更合適。


UPDATE(有問題的光被澄清):

就應該在你的菜單項「命令」,當你選擇該菜單項,這將引起人們的關注。

然後,如果TextEditor具有焦點(...因此是命令目標...)....那麼它應該看到Cut命令。

我希望阿瓦隆編輯器能夠處理好知道「ApplicationCommands」,即剪切,複製,粘貼等

<MenuItem Header="_Cut" Command="ApplicationCommands.Cut"> 
+0

讓我改一下這個問題,因爲即時通訊可能不要求它的正確方法我知道我做錯了什麼,但不知道如何正確地問。 – Mookie

+0

你應該在你的菜單項中指定「Command」...然後如果TextEditor有焦點(...因此是命令目標...)....那麼它應該看到Cut命令... 。