2017-02-03 42 views
0

當我在XAML中添加Interaction.Behaviors樣式時,它的錯誤如下。其實,我只是想添加一些常用的風格,並且會在每個視圖中使用。如何在樣式中添加行爲

那麼,我應該添加更多?

屬性「行爲」沒有可訪問的setter。

「行爲」屬性不是DependencyProperty。要用於標記,必須使用可訪問的實例屬性「行爲」在目標類型上公開非附加屬性。對於附加屬性,聲明類型必須提供靜態「GetBehaviors」和「SetBehaviors」方法。

我在這一行中有錯誤。

<Setter Property="e:Interaction.Behaviors"> 
    <Setter.Value> 

這裏是我的所有示例源代碼。

<Window.Resources> 
    <Style x:Key="ToolTipTouchStyle" TargetType="{x:Type TextBlock}"> 
     <!--<Setter Property="e:Interaction.Behaviors" Value="localToolTip:ToolTipTouchScreen" />--> 
     <Style.Setters> 
      <Setter Property="e:Interaction.Behaviors"> 
       <Setter.Value> 
        <localToolTip:ToolTipTouchScreen /> 
       </Setter.Value> 
      </Setter> 
     </Style.Setters> 
    </Style> 
</Window.Resources> 

public class ToolTipTouchScreen : Behavior<UIElement> 
{ 

    Timer timer { get; set; } 
    ToolTip toolTip { get; set; } 

    protected override void OnAttached() 
    { 
     base.OnAttached(); 

     timer = new Timer(); 
     timer.Interval = 5000; 
     timer.Elapsed += OnTimerElapsed; 

     AssociatedObject.MouseLeave += OnMouseLeave; 
     AssociatedObject.MouseLeftButtonUp += OnMouseLeftButtonUp; 

    } 

    protected override void OnDetaching() 
    { 
     base.OnDetaching(); 

     AssociatedObject.MouseLeave -= OnMouseLeave; 
     AssociatedObject.MouseLeftButtonUp -= OnMouseLeftButtonUp; 
    } 

    public void OnMouseLeave(object sender, System.Windows.Input.MouseEventArgs e) 
    { 
     CloseToolTip(); 
    } 

    public void OnMouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) 
    { 
     if (((dynamic)sender).ToolTip is string) 
     { 
      toolTip = new ToolTip(); 
      toolTip.Content = ((dynamic)sender).ToolTip; 

     } 
     else 
     { 
      toolTip = (ToolTip)((dynamic)sender).ToolTip; 
     } 


     toolTip.IsOpen = true; 
     timer.Start(); 
    } 

    private void CloseToolTip() 
    { 
     if (toolTip != null) 
     { 
      toolTip.IsOpen = false; 
     } 
    } 

    private void OnTimerElapsed(object sender, ElapsedEventArgs e) 
    { 
     timer.Stop(); 
     Application.Current.Dispatcher.BeginInvoke((Action)CloseToolTip, DispatcherPriority.Send); 
    } 

} 
+0

的[如何在樣式二傳手添加混合行爲]可能的複製(http://stackoverflow.com/問題/ 1647815 /如何到添加-A-混合行爲-IN-A-風格引領者) – mm8

回答

0

你可以嘗試控制定義中設置它,象這樣

xmlns:behaviors="clr-namespace:MyNameSpace.Behavior;assembly=MyNameSpace"    

<ControlType Text="Something"> 
<ControlType.Behaviors> 
<behaviors:EmailValidatorBehavior /> 
</ControlType.Behaviors> 
</ControlType>