C#XAML-将导航按钮添加到浏览器工具栏

时间:2016-04-29 09:31:12

标签: c# wpf xaml exception

我使用以下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#,所以对它不太熟悉或者它是如何工作的......

3 个答案:

答案 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 - 获取值   表示上下文菜单命令。

     
    
      
        

...