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