如何解决绑定到另一个UI元素自定义注册属性
我想在控件上创建情节提要效果,并将其开始绑定到另一个元素的属性。
我有XAML:
<StackPanel Name="ItemStackPanel" Width="700" Background="Transparent" Margin="0" DragEnter="StackPanel_DragEnter" DragLeave="StackPanel_DragLeave">
<StackPanel.Style>
<Style>
<Trigger Property="classes:DragDropHelper.IsDragOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Background.Color">
<ColorAnimation To="LightGray" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Background.Color">
<ColorAnimation To="Transparent" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
</StackPanel>
拖动Enter和离开事件:
private void StackPanel_DragEnter(object sender,DragEventArgs e)
{
DragDropHelper.SetIsDragOver((DependencyObject)sender,true);
}
private void StackPanel_DragLeave(object sender,false);
}
DragHelper类
public class DragDropHelper
{
public static readonly DependencyProperty IsDragOverProperty = DependencyProperty.RegisterAttached(
"IsDragOver",typeof(bool),typeof(DragDropHelper),new PropertyMetadata(default(bool)));
public static void SetIsDragOver(DependencyObject element,bool value)
{
element.SetValue(IsDragOverProperty,value);
}
public static bool GetIsDragOver(DependencyObject element)
{
return (bool)element.GetValue(IsDragOverProperty);
}
}
现在,我希望窗口上的其他元素能够在StackPanel上反映DragOver。 假设我希望单个TextBlock基于StackPanel被拖动的事实来更改其背景。 我想我需要使用DataTrigger,对吗? 我尝试过:
<TextBlock Grid.Row="10" Grid.ColumnSpan="10" Panel.ZIndex="10" Foreground="Red" Background="Red" Height="5" Opacity="1" Margin="0" Padding="0">
<TextBlock .Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsDragOver,ElementName=ItemStackPanel}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Background.Color">
<ColorAnimation To="Green" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Background.Color">
<ColorAnimation To="Transparent" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock .Style>
</TextBlock >
但是它什么也没做。
如何从StackPanel读取IsDragOver属性?
编辑: 好的,可以。
只需按照上述说明重建您的解决方案:
我希望我可以投票更多次。确保您重建 进行此更改后的项目。我第一次忘了做 并以为Path =并没有真正起作用。 – tofutim 13年5月15日在 15:32
这让我发疯,所有需要做的就是重建。.;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。