我使用以下XAML代码向我的C#应用程序添加了一个Web浏览器:
<WebBrowser Name="rivBrowser" Height="550" Width="620" Margin="0, 40, 0, 0" Visibility="Visible" />
<DockPanel>
<ToolBarTray DockPanel.Dock="Top">
<ToolBar Header="File">
<Button Command="New" Content="New" ToolBar.OverflowMode="Always" />
<Button Command="Open" Content="Open" ToolBar.OverflowMode="Always" />
<Button Command="Save" Content="Save" ToolBar.OverflowMode="Always" />
</ToolBar>
<ToolBar Header="Edit" Margin="5.4,0,-5.4,0">
<Button Command="Cut" Content="Cut" ToolBar.OverflowMode="Always" />
<Button Command="Copy" Content="Copy" ToolBar.OverflowMode="Always" />
<Button Command="Paste" Content="Paste" ToolBar.OverflowMode="Always" />
</ToolBar>
<ToolBar Margin="9.2,0,-8.2,0">
<Button Command="Back" ToolTip="Return to the previous page"/>
<Image Source="C:\Users\elgan\workspace\browser\riviam_windows\Images\navigateBack.png" Width="20" Height="20" Margin="0,0,0,2.4" />
</ToolBar>
<ToolBar Margin="16.4,0,-16.2,0" >
<Button Command="Forward" ToolTip="Proceed to the next page" />
<Image Source="C:\Users\elgan\workspace\browser\riviam_windows\Images\navigateForward.png" Width="20" Height="20" />
</ToolBar>
</ToolBarTray>
</DockPanel>
但是,我在&#39;转发&#39;和&#39;返回&#39;我尝试添加到工具栏的导航按钮。例外情况说:
抛出异常
&#39; System.Windows.Markup.XamlParseException&#39;在PresentationFramework.dll
中
和
其他信息:&#39;为System.Windows.Baml2006.TypeConverterMarkupExtension&#39;提供价值。抛出异常。&#39;行号&#39; 73&#39;和行位置&#39; 22&#39;。
该行是<Button Command="Back" ToolTip="Return to the previous page"/>
行
我想使用的按钮允许用户导航回浏览器中显示的上一页 - 但我不确定我是否正确地执行此操作...我应该在这里用C#代码调用方法吗?我该怎么做?
我在大约6年内没有使用过C#,所以对它不太熟悉或者它是如何工作的......
答案 0 :(得分:1)
既然你没有说你是否使用MVVM模式我会假设你没有。
在这种情况下,您需要订阅Click
的{{1}}事件,而不是使用Button
例如:
Command
在您的代码隐藏(yourfile.xaml.cs)上,您将在单击按钮时调用该方法:
<Button Click="GoForward_OnClick" ToolTip="Proceed to the next page" />
答案 1 :(得分:0)
您的Command应该指向viewmodel上的DelegateCommand对象。这是一个示例:
查看:
<Button Command="{Binding SaveCommand}" />
视图模型:
public DelegateCommand SaveCommand { get; private set; }
public SampleViewModel()
{
SaveCommand = new DelegateCommand(Save);
}
private void Save()
{
// do something
}
答案 2 :(得分:0)
如果你想使用内置的ApplicationCommands,你应该使用像Command
这样ApplicationCommands.Cut
的语法。
例如:
<Button Content="Cut" Command="ApplicationCommands.Cut"/>
<Button Content="Copy" Command="ApplicationCommands.Copy"/>
<Button Content="Paste" Command="ApplicationCommands.Paste"/>
MSDN有一篇关于available Application Commands列表的好文章:
CancelPrint - 获取表示“取消打印”命令的值。 System_CAPS_pubpropertySystem_CAPS_static
关闭 - 获取表示“关闭”命令的值。
ContextMenu - 获取值 表示上下文菜单命令。
...