Silverlight:MouseDragElementBehavior无法应用于ListBox的变相解决办法

Blend自带的行为MouseDragElementBehavior应用到ListBox后,如果用鼠标按住列表列拖动,没有任何效果,在多次尝试中意外发现,如果将ListBox的边框设置成一个较大值,在边框上点击时,却可以拖动,但是一般开发中,没人会把ListBox设置一个粗粗的难看边框。于是想到了下面的变通解决办法:当鼠标进入时显示边框,鼠标离开时再隐藏边框。

示例代码:

Xaml部分

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" x:Class="sl_drag_sample.MainPage"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">

        <ListBox x:Name="lbSample" MinHeight="50" MinWidth="100"  BorderThickness="0" HorizontalAlignment="Center" VerticalAlignment="Center" MouseEnter="ShowBorder"  MouseLeftButtonUp="HideBorder" MouseLeftButtonDown="ShowBorder"  MouseMove="ShowBorder" MouseLeave="HideBorder">
            <i:Interaction.Behaviors>
                <ei:MouseDragElementBehavior/>
            </i:Interaction.Behaviors>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="这是测试文字">
                        <i:Interaction.Behaviors>
                            <ei:MouseDragElementBehavior/>
                        </i:Interaction.Behaviors>
                    </TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</UserControl>

  

Xaml.cs部分

using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace sl_drag_sample
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            this.Loaded += new RoutedEventHandler(MainPage_Loaded);
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            char[] s = "ABCDE".ToCharArray();
            lbSample.ItemsSource = s;
        }

        private void ShowBorder(object sender, MouseEventArgs e)
        {
            (sender as ListBox).BorderThickness = new Thickness(20.0);
        }

        private void HideBorder(object sender, MouseEventArgs e)
        {
            (sender as ListBox).BorderThickness = new Thickness(0.0);
        }
    }
}

  

时间: 2024-07-31 23:21:12

Silverlight:MouseDragElementBehavior无法应用于ListBox的变相解决办法的相关文章

请教:无法应用于“string”和“int”类型的操作数

问题描述 SqlConnectioncn;StringstrConnection=ConfigurationSettings.AppSettings["ConnectionString"];//公用cn=newSqlConnection(strConnection);SqlCommandcm=newSqlCommand("tijiao1",cn);cm.CommandType=CommandType.StoredProcedure;cm.Parameters.Add

OS X升级到10.11后Xcode6.4界面无iOS device选择栏的解决办法

原来在Xcode6.4项目运行按钮右侧会有一个可以选择设备或模拟器的选择栏,但是升级后没有了.但是Xcode7.0.1打开同样的项目会有显示. 简单找了一下无果后,发现咋Xcode顶部菜单里可以找到切换的方法: 暂时这样将就吧,估计马上要切到Xcode7.x中去玩耍了 ;)

Windows 7系统下玩游戏无法全屏的3种解决办法

操作步骤: 一.Nvidia显卡 解决N卡在Windows 7系统下(Windows xp系统也一样的)游戏全屏的问题,具体步骤如下: 1.桌面空白处右击选择"NVIDIA控制面板": 2.左侧选择"显示"---调整桌面尺寸和位置:(有的是"更改平板显示器缩放",不同显卡驱动版本不一样,寻找关于缩放的设置) 3.选中"使用NVIDIA缩放功能",如果原来的设置就在此选项上,就直接应用.确定一下即可. 二.AMD ATi显卡 1

编写WCF服务时右击配置文件无“Edit WCF Configuration”(编辑 WCF 配置)远程的解决办法

原文:编写WCF服务时右击配置文件无"Edit WCF Configuration"远程的解决办法 今天在看<WCF揭秘>书中看到作者提出可以在一个WCF Host应用程序的App.Config文件上右击, 通过弹出的" Edit WCF Configuration"(编辑WCF配置)选项来利用GUI界面编辑WCF的配置信息. 但是我在尝试的时候并没有找到这个右键菜单,开始还以为作者弄错了,但又尝试了一会后便发现了窍门. 右键App.Config文件默认

silverlight 4 tools for vs2010无法在vs2010 SP1上安装的解决办法

环境:英文版vs2010 sp1 + vs2013 RC 90天体验版   原来可以正常做silverilght 4 项目开发,今天因为vs2013 RC过了90天体验期,卸载时顺带把Silverlihgt相关的东东干掉了,然后再用vs2010打开原来的silverlight项目就杯具了   到网上下载silverlight 4 tools for vs2010(中文版),准备重新安装silveright 4 tools,结果弹出一个大大的警告框   解决办法: 将Silverlight4_To

无internet访问权限解决办法

再次诅咒万恶的协同拨号... 为了突破协同拨号器的限制.寝室网络采用wifi共享方式共享网络带宽.但是有windows 7的系统链接到共享wifi时出现无internet访问权限,或者访问受限等问题无法连接成功. 查看网络驱动,驱动正常. ipconfig查询IP地址,发现无线网卡IP地址已经存在,但是网关没有分配.更改不同的网络,发现无论是CMCC还是共享wifi,IP地址始终不变. 查看网络链接中的设备,发现只有发出包,没有接受到包.禁用无关网络设备,去掉无线设备中一些无用的协议,依然没有用

Win8系统安装.NET3.5无反应和下载慢问题的办法

解决Win8系统 安装.NET3.5无反应和下载慢问题的办法: 在系统盘符下如:C:Windowssystem32 运行: dism.exe /online /enable-feature /featurename:NetFX3 /Source:X:sourcessxs X表示 Windows8安装镜像的根目录 可以用虚拟光驱,或者解压光盘镜像

引起电脑程序无响应的几种原因和解决办法

最近一位大学同学问过我这样的一个问题:为什么电脑近期老是出现浏览网页时电脑无响应,需要结束任务才可以关闭当前程序,对于这个问题,多数人可能都会遇到过,个人经验认为这种现象产生的原因有很多.以前发现有些电脑新手遇到电脑无响应就开始不知所措,盲目的乱点鼠标,想结束当前窗口,但往往事与愿违,这时候鼠标根本就没用,虽然鼠标多数可以移动,但什么都操作不了,越是点击鼠标越是电脑无响应. 有的时候刚好在网上写文章,由于插图了一张网页图片或其它信息时,最讨厌的就是出现程序无响应,笔者就深受其害,一篇辛苦写了好半

笔记本电脑XP中无线网络连接”属性里面无“无线网络配置”选项的解决

故障现象:笔记本上使用windows自带的无线网络配置时发现"无线网络连接"属性里面无"无线网络配置"选项,如下图所示: 解决方法:此问题是由于wins本身关于无线网络的Wireless Zero Configuration 服务未开启,在"计算机管理-服务和应用程序-服务"里面把Wireless Zero Configuration服务启动即可以,如下图所示: Wireless Zero Configuration开启后,在打开"网上