.net WPF 内置命令
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1574788/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
WPF Built-in Commands
提问by jpbochi
I'm looking for a complete list of built-in WPF Commands.
我正在寻找内置 WPF 命令的完整列表。
The best list I've found so far is here, but it does not list all commands.
迄今为止我找到的最好的列表是here,但它没有列出所有命令。
Some nice-to-have details would be:
一些不错的细节是:
Controls/components with support to the commands (for example, TextBoxsupports edit commands such as Paste, Copy, Cut, Redo, and Undo);
Default Key Gestures and UI Text (can be extracted from MSDN Library).
支持命令的控件/组件(例如,TextBox支持粘贴、复制、剪切、重做和撤消等编辑命令);
默认按键手势和 UI 文本(可以从MSDN Library 中提取)。
回答by Ray Burns
It is easy to display a complete list of all commands in all loaded assemblies:
在所有加载的程序集中显示所有命令的完整列表很容易:
public string[] GetAllCommands()
{
return (
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
from prop in type.GetProperties()
where
typeof(ICommand).IsAssignableFrom(prop.PropertyType) &&
prop.GetAccessors()[0].IsStatic
orderby type.Name, prop.Name
select type.Name + "." + prop.Name
).ToArray();
}
With PresentationFramework loaded I get the list at the bottom of this answer, which you will see is absolutely complete.
加载 PresentationFramework 后,我得到了这个答案底部的列表,你会看到它是绝对完整的。
If you also want to see the command type (eg RoutedUIComand) and gestures, you can add this to the LINQ:
如果您还想查看命令类型(例如 RoutedUIComand)和手势,您可以将其添加到 LINQ:
let commandType = prop.PropertyType
let gestures =
typeof(UIElement).IsAssignableFrom(commandType) ?
((UIElement)prop.GetValue(null)).InputGestures :
null
Then your select might be something like this:
那么你的选择可能是这样的:
select type.Name + "." + prop.Name + " " + commandType.Name + " " + gestures
Programmatically finding out which controls do something with a given command is also possible. Basically something like this ought to work (not tried, but this will give you the idea):
以编程方式找出哪些控件使用给定命令执行某些操作也是可能的。基本上这样的事情应该可以工作(没有尝试过,但这会给你这个想法):
var allCommands = (
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
from prop in type.GetProperties()
where
typeof(ICommand).IsAssignableFrom(prop.PropertyType) &&
prop.GetAccessors()[0].IsStatic
orderby type.Name, prop.Name
select new
{
typeName = type.Name,
propName = prop.Name,
displayAs = type.Name + "." + prop.Name,
}
).ToArray();
var classesReferencingCommand = (
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
from method in type.GetMethods()
let methodBodyString = ConvertILToString(method.MethodBody.GetILAsByteArray())
let info = new
{
typeName = type.FullName,
referencedCommands =
from cmd in allCommands
where
methodBodyString.Contains(cmd.typeName) &&
methodBodyString.Contains(cmd.propName)
select cmd
}
where info.commands.Any()
select info
).ToArray();
where ConvertILToString would probably be something like this:
其中 ConvertILToString 可能是这样的:
static string ConvertILToString(byte[] bytes)
{
return new string(bytes.Where(b => b!=0).Select(b => (char)b).ToArray());
}
The results can be used any way you like, for example they can be displayed using an ItemsControl:
结果可以按您喜欢的任何方式使用,例如可以使用 ItemsControl 显示它们:
<ItemsControl Source="{Binding classesReferencingCommand}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="{Binding typeName}" FontWeight="Bold">
<ItemsControl Source="{Binding referencedCommands}" Margin="10 0 0 0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding displayAs}" />
... close all tags ...
Alternatively you could output the data in a text or XML format or add it to a database. Also note that this second query can be turned around with the command iteration on the outside if you prefer a listing by command.
或者,您可以以文本或 XML 格式输出数据或将其添加到数据库中。另请注意,如果您更喜欢按命令列出,则可以通过外部的命令迭代来扭转第二个查询。
The code above will give you the precise facts and will not lie, because it is looking at the NET Framework itself.
上面的代码将为您提供准确的事实并且不会撒谎,因为它正在查看 NET Framework 本身。
Here is the promised list of all commands in PresentationFramework:
这是 PresentationFramework 中所有命令的承诺列表:
ApplicationCommands.CancelPrint
ApplicationCommands.Close
ApplicationCommands.ContextMenu
ApplicationCommands.Copy
ApplicationCommands.CorrectionList
ApplicationCommands.Cut
ApplicationCommands.Delete
ApplicationCommands.Find
ApplicationCommands.Help
ApplicationCommands.New
ApplicationCommands.NotACommand
ApplicationCommands.Open
ApplicationCommands.Paste
ApplicationCommands.Print
ApplicationCommands.PrintPreview
ApplicationCommands.Properties
ApplicationCommands.Redo
ApplicationCommands.Replace
ApplicationCommands.Save
ApplicationCommands.SaveAs
ApplicationCommands.SelectAll
ApplicationCommands.Stop
ApplicationCommands.Undo
ComponentCommands.ExtendSelectionDown
ComponentCommands.ExtendSelectionLeft
ComponentCommands.ExtendSelectionRight
ComponentCommands.ExtendSelectionUp
ComponentCommands.MoveDown
ComponentCommands.MoveFocusBack
ComponentCommands.MoveFocusDown
ComponentCommands.MoveFocusForward
ComponentCommands.MoveFocusPageDown
ComponentCommands.MoveFocusPageUp
ComponentCommands.MoveFocusUp
ComponentCommands.MoveLeft
ComponentCommands.MoveRight
ComponentCommands.MoveToEnd
ComponentCommands.MoveToHome
ComponentCommands.MoveToPageDown
ComponentCommands.MoveToPageUp
ComponentCommands.MoveUp
ComponentCommands.ScrollByLine
ComponentCommands.ScrollPageDown
ComponentCommands.ScrollPageLeft
ComponentCommands.ScrollPageRight
ComponentCommands.ScrollPageUp
ComponentCommands.SelectToEnd
ComponentCommands.SelectToHome
ComponentCommands.SelectToPageDown
ComponentCommands.SelectToPageUp
DocumentViewer.FitToHeightCommand
DocumentViewer.FitToMaxPagesAcrossCommand
DocumentViewer.FitToWidthCommand
DocumentViewer.ViewThumbnailsCommand
EditingCommands.AlignCenter
EditingCommands.AlignJustify
EditingCommands.AlignLeft
EditingCommands.AlignRight
EditingCommands.Backspace
EditingCommands.CorrectSpellingError
EditingCommands.DecreaseFontSize
EditingCommands.DecreaseIndentation
EditingCommands.Delete
EditingCommands.DeleteNextWord
EditingCommands.DeletePreviousWord
EditingCommands.EnterLineBreak
EditingCommands.EnterParagraphBreak
EditingCommands.IgnoreSpellingError
EditingCommands.IncreaseFontSize
EditingCommands.IncreaseIndentation
EditingCommands.MoveDownByLine
EditingCommands.MoveDownByPage
EditingCommands.MoveDownByParagraph
EditingCommands.MoveLeftByCharacter
EditingCommands.MoveLeftByWord
EditingCommands.MoveRightByCharacter
EditingCommands.MoveRightByWord
EditingCommands.MoveToDocumentEnd
EditingCommands.MoveToDocumentStart
EditingCommands.MoveToLineEnd
EditingCommands.MoveToLineStart
EditingCommands.MoveUpByLine
EditingCommands.MoveUpByPage
EditingCommands.MoveUpByParagraph
EditingCommands.SelectDownByLine
EditingCommands.SelectDownByPage
EditingCommands.SelectDownByParagraph
EditingCommands.SelectLeftByCharacter
EditingCommands.SelectLeftByWord
EditingCommands.SelectRightByCharacter
EditingCommands.SelectRightByWord
EditingCommands.SelectToDocumentEnd
EditingCommands.SelectToDocumentStart
EditingCommands.SelectToLineEnd
EditingCommands.SelectToLineStart
EditingCommands.SelectUpByLine
EditingCommands.SelectUpByPage
EditingCommands.SelectUpByParagraph
EditingCommands.TabBackward
EditingCommands.TabForward
EditingCommands.ToggleBold
EditingCommands.ToggleBullets
EditingCommands.ToggleInsert
EditingCommands.ToggleItalic
EditingCommands.ToggleNumbering
EditingCommands.ToggleSubscript
EditingCommands.ToggleSuperscript
EditingCommands.ToggleUnderline
MediaCommands.BoostBass
MediaCommands.ChannelDown
MediaCommands.ChannelUp
MediaCommands.DecreaseBass
MediaCommands.DecreaseMicrophoneVolume
MediaCommands.DecreaseTreble
MediaCommands.DecreaseVolume
MediaCommands.FastForward
MediaCommands.IncreaseBass
MediaCommands.IncreaseMicrophoneVolume
MediaCommands.IncreaseTreble
MediaCommands.IncreaseVolume
MediaCommands.MuteMicrophoneVolume
MediaCommands.MuteVolume
MediaCommands.NextTrack
MediaCommands.Pause
MediaCommands.Play
MediaCommands.PreviousTrack
MediaCommands.Record
MediaCommands.Rewind
MediaCommands.Select
MediaCommands.Stop
MediaCommands.ToggleMicrophoneOnOff
MediaCommands.TogglePlayPause
NavigationCommands.BrowseBack
NavigationCommands.BrowseForward
NavigationCommands.BrowseHome
NavigationCommands.BrowseStop
NavigationCommands.DecreaseZoom
NavigationCommands.Favorites
NavigationCommands.FirstPage
NavigationCommands.GoToPage
NavigationCommands.IncreaseZoom
NavigationCommands.LastPage
NavigationCommands.NavigateJournal
NavigationCommands.NextPage
NavigationCommands.PreviousPage
NavigationCommands.Refresh
NavigationCommands.Search
NavigationCommands.Zoom
Slider.DecreaseLarge
Slider.DecreaseSmall
Slider.IncreaseLarge
Slider.IncreaseSmall
Slider.MaximizeValue
Slider.MinimizeValue
This list is complete.
这份清单是完整的。
If there are any additional gestures in the themes, they can easily be extracted by loading the theme resource dictionary and doing some LINQ on it. The queries are trivial: Just search for <InputGesture>. Update:I don't think there are any gestures in the themes, since the default gestures are loaded from resources. So this part will probably not be necessary.
如果主题中有任何额外的手势,可以通过加载主题资源字典并对其进行一些 LINQ 来轻松提取它们。查询很简单:只需搜索<InputGesture>. 更新:我认为主题中没有任何手势,因为默认手势是从资源加载的。所以这部分可能没有必要。
回答by Drew Marsh
Check out the ApplicationCommands, ComponentCommandsand NavigationCommandsclasses. These classes all contain static properties representing various, standard routed commands which you can use within your own applications and to interact with intrinsic controls within the framework.
查看ApplicationCommands、ComponentCommands和NavigationCommands类。这些类都包含表示各种标准路由命令的静态属性,您可以在自己的应用程序中使用这些命令并与框架内的内部控件进行交互。
回答by Drew Marsh
Checkout this link http://en.csharp-online.net/WPF_Concepts%E2%80%94Built-In_Commands
查看此链接http://en.csharp-online.net/WPF_Concepts%E2%80%94Built-In_Commands
WPF's built-in commands are exposed as static properties of five different classes:
WPF 的内置命令作为五个不同类的静态属性公开:
* ApplicationCommands—Close, Copy, Cut, Delete, Find, Help, New, Open, Paste, Print, PrintPreview, Properties, Redo, Replace, Save, SaveAs, SelectAll, Stop, Undo, and more
* ComponentCommands—MoveDown, MoveLeft, MoveRight, MoveUp, ScrollByLine, ScrollPageDown, ScrollPageLeft, ScrollPageRight, ScrollPageUp, SelectToEnd, SelectToHome, SelectToPageDown, SelectToPageUp, and more
* MediaCommands—ChannelDown, ChannelUp, DecreaseVolume, FastForward, IncreaseVolume, MuteVolume, NextTrack, Pause, Play, PreviousTrack, Record, Rewind, Select, Stop, and more
* NavigationCommands—BrowseBack, BrowseForward, BrowseHome, BrowseStop, Favorites, FirstPage, GoToPage, LastPage, NextPage, PreviousPage, Refresh, Search, Zoom, and more
* EditingCommands—AlignCenter, AlignJustify, AlignLeft, AlignRight, CorrectSpellingError, DecreaseFontSize, DecreaseIndentation, EnterLineBreak, EnterParagraphBreak, IgnoreSpellingError, IncreaseFontSize, IncreaseIndentation, MoveDownByLine, MoveDownByPage, MoveDownByParagraph, MoveLeftByCharacter, MoveLeftByWord, MoveRightByCharacter, MoveRightByWord, and more

