2017-05-06 92 views
2

我有一個選項卡控件,我在其中以編程方式添加選項卡項目。我想要每個標籤項都有一個關閉按鈕。在谷歌上搜索,我發現下面的XAML代碼吧:更改按鈕XAML到C#

<Button Content="X" Cursor="Hand" DockPanel.Dock="Right" 
     Focusable="False" FontFamily="Courier" FontSize="9" 
     FontWeight="Bold" Margin="5,0,0,0" Width="16" Height="16" />  

現在,我將這個代碼轉換成等價的C#代碼,並與一些屬性的掙扎。下面給出的是我到現在爲止的代碼。

var CloseButton = new Button() 
{ 
    Content = "X", 
    Focusable = false, 
    FontFamily = FontFamily = new System.Windows.Media.FontFamily("Courier"), 
    FontSize = 9, 
    Margin = new Thickness(5, 0, 0, 0), 
    Width = 16, 
    Height = 16 
};  

我想要像Cursor,DockPanel.Dock這樣的屬性幫助。任何幫助,這是非常感謝。謝謝 !

+2

看一看這一https://msdn.microsoft.com/en-us /library/system.windows.controls.button(v=vs.110).aspx你需要的唯一屬性,我沒有找到是DockPanel.Dock。我認爲你使用的是System.Windows.Forms.Button而不是System.Windows.Controls.Button –

+2

DockPanel.Dock可以通過一個DockPanel對象來處理。請參閱[this](https://msdn.microsoft.com/en-us/library/system.windows.controls.dockpanel.dock(v = vs.110).aspx)中的用法以供參考 – YashTD

+0

並且由於YashTD編寫了Dock Panel可以用這種方式處理DockPanel.SetDock(CONTROL_NAME,Dock.Right); –

回答

6

遊標是一組相當標準的類型。有一些靜態類可以讓你訪問它們中的很多。使用Cursors類來獲得Hand

DockPanel.Dock是附加屬性,它不是按鈕控件的屬性。如果可用,您必須使用該依賴對象的屬性設置器或其他便利方法。

var button = new Button 
{ 
    Content = "X", 
    Cursor = Cursors.Hand, 
    Focusable = false, 
    FontFamily = new FontFamily("Courier"), 
    FontSize = 9, 
    Margin = new Thickness(5, 0, 0, 0), 
    Width = 16, 
    Height = 16 
}; 
// this is how the framework typically sets values on objects 
button.SetValue(DockPanel.DockProperty, Dock.Right); 
// or using the convenience method provided by the owning `DockPanel` 
DockPanel.SetDock(button, Dock.Right); 

然後設置綁定,創建相應的綁定對象,並把它傳遞給元素的SetBinding方法:

button.SetBinding(Button.CommandProperty, new Binding("DataContext.CloseCommand") 
{ 
    RelativeSource = new RelativeSource { AncestorType = typeof(TabControl) }, 
}); 
button.SetBinding(Button.CommandParameterProperty, new Binding("Header")); 
+0

在button.SetValue上發生錯誤:WindowsBase.dll中發生未處理的異常'System.ArgumentException' 附加信息:'System.Windows.Data.Binding'不是有效值爲財產'命令'。 –

+1

@NareshRavlani它應該是SetBinding而不是SetValue。 – Clemens

+0

對不起。我有VM和CloseCommand。我想我需要一些咖啡:P –