2016-04-29 103 views
0

我曾嘗試使用下面的XAML代碼添加一個網絡瀏覽器到我的C#應用​​程序:C#XAML-添加導航按鈕瀏覽器工具欄

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

不過,我得到一些例外與「前進」和'正在'導航按鈕,我試圖添加到工具欄。例外說:

異常在PresentationFramework.dll

信息拋出

'System.Windows.Markup.XamlParseException':'在'System.Windows.Baml2006.TypeConverterMarkupExtension'上提供值會拋出e xception「。行號「73」和行位置「22」。

這行是行<Button Command="Back" ToolTip="Return to the previous page"/>

它的按鈕,我想用來允許用戶導航回在瀏覽器的顯示前一頁面,但我不知道,我做這正確...我應該從我的C#代碼調用一個方法在這裏?我怎麼做?

我沒有使用C#在6年左右,所以不是很熟悉它或它如何工作?

+1

Command =「Back」這看起來不對。因爲你不把命令綁定到字符串。 – Karolis

回答

0

您的命令應指向您的視圖模型一個DelegateCommand對象。下面是一個示例:

查看:

<Button Command="{Binding SaveCommand}" /> 

視圖模型:

public DelegateCommand SaveCommand { get; private set; } 

public SampleViewModel() 
{ 
    SaveCommand = new DelegateCommand(Save); 
} 

private void Save() 
{ 
    // do something 
} 
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 - 獲取代表上下文菜單命令的值 。

...

1

既然你不說,如果你使用的是MVVM模式或不我會假設你不知道。

在這種情況下,你要訂閱Click事件Button的而不是使用Command

例如:

<Button Click="GoForward_OnClick" ToolTip="Proceed to the next page" /> 

並在您的代碼隱藏(yourfile.xaml .cs),當按鈕被點擊時,你會得到這個方法:

private void GoForward_OnClick(object sender, RoutedEventArgs e) 
{ 
    // Your code logic goes here 
}