我是一个完整的Noob,所以我很难绕过它的工作方式。
基本上我有一个即时使用的主页面,在XAML中我创建了一个菜单
我所拥有的是一个Document(DummyDoc),其中包含我正在尝试将find命令发送到的TextBox。
我已经尝试了这一切并用谷歌搜索它,但我似乎无法让它为我工作,并可以使用一些帮助推动正确的方向
主要表格
<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绑定从主窗体中执行“剪切”操作启动文本框的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));
}
}
答案 0 :(得分:1)
ElementName
通过查找使用您指定的字符串标识符的元素来查找元素。
您是否在文本框标记上添加了x:Name="local:TextBox"
?
我认为你使用“local:TextBox”来划线。
对于初学者...这是用于引用命名空间中的元素类型的语法....它表示“本地命名空间中的类型TextBox
”.....它无效(或者更确切地说,在你正在使用的上下文中....你应该只分配一个“标识符”字符串。
...所以
CommandTarget="{Binding ElementName=textboxFind}"
...
<TextBox x:Name="textboxFind" ..... />
会更合适。
更新(根据问题澄清):
您应该在菜单项中指定一个“命令”,当您选择该菜单项时,该命令将被引发。
然后如果TextEditor具有焦点(...因此是命令目标...)....那么它应该看到Cut命令。
我希望Avalon编辑能够处理众所周知的“ApplicationCommands”,即剪切,复制,粘贴等。
<MenuItem Header="_Cut" Command="ApplicationCommands.Cut">