1

我在我的根ResourceDictionary中有以下內容。 Foreground = Red部分工作,但自定義附加的依賴項屬性不會被設置。Silverlight 4 - 如何在樣式中設置自定義附加的依賴項屬性?

我可以通過代碼手動設置它,但我顯然希望避免必須爲每個文本框設置它。這在Silverlight中工作嗎?我已經看到一些關於在WPF中完成它的帖子,而且我的代碼看起來是正確的(對我來說)。

<Style TargetType="TextBox"> 
    <Setter Property="controls:TextBoxContextMenu.HasContextMenu" Value="True" /> 
    <Setter Property="Foreground" Value="Red" /> 
</Style> 


/// <summary> 
    /// Gets the value of the HasContextMenu attached property for a specified TextBox. 
    /// </summary> 
    /// <param name="element">The TextBox from which the property value is read.</param> 
    /// <returns>The HasContextMenu property value for the TextBox.</returns> 
    public static bool GetHasContextMenu(TextBox element) 
    { 
     if (element == null) 
     { 
      throw new ArgumentNullException("element"); 
     } 
     return (bool)element.GetValue(HasContextMenuProperty); 
    } 

    /// <summary> 
    /// Sets the value of the HasContextMenu attached property to a specified TextBox. 
    /// </summary> 
    /// <param name="element">The TextBox to which the attached property is written.</param> 
    /// <param name="value">The needed HasContextMenu value.</param> 
    public static void SetHasContextMenu(TextBox element, bool value) 
    { 
     if (element == null) 
     { 
      throw new ArgumentNullException("element"); 
     } 
     element.SetValue(HasContextMenuProperty, value); 
    } 

    /// <summary> 
    /// Identifies the HasContextMenu dependency property. 
    /// </summary> 
    public static readonly DependencyProperty HasContextMenuProperty = 
     DependencyProperty.RegisterAttached(
      "HasContextMenu", 
      typeof(bool), 
      typeof(TextBox), 
      new PropertyMetadata(false, OnHasContextMenuPropertyChanged)); 

    /// <summary> 
    /// HasContextMenuProperty property changed handler. 
    /// </summary> 
    /// <param name="d">TextBoxContextMenu that changed its HasContextMenu.</param> 
    /// <param name="e">Event arguments.</param> 
    private static void OnHasContextMenuPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
{ 
    // code 
} 

我要補充的是,附加依賴屬性是一類由RadContextMenu繼承,這是定義的DependencyObject(我一直在閱讀和某個地方,這是建議,如果附加屬性是這可不行定義在這樣的一類,但這似乎很奇怪)

回答

0

我想通了。這確實是由於我在課堂上定義了附加屬性。

要修復它,我創建了一個名爲TextBoxContextMenuService的新類,並將代碼放在那裏。

相關問題