返回首页

{A}{A2的}{A3的}TileView控制
TileView的控制可​​让你安排在瓷砖的时尚收集物品(瓷砖),其余的瓷砖之间变得活跃并显示在一个相对较大的区域。激活和停用的瓷砖是动画。这行为更不像控制,但它们是不同的。
{S0的}选择基
TileView介绍瓷砖的集合,并安排他们在不同的时尚。当它来呈现项目集合,ItemsControl是最好的选择,我们经常使用的控制,大部分都是从ItemsControl的ListView,TreeView的派生,或菜单和他们每个人都有自己的物品,以及。 TileView简单地介绍了收集,所以从ItemsControl派生,每个tile介绍的内容。很显然,我们可以去ContentControl的,所以我们可以提出的任何内容,但在未来可能出现的需求,瓷砖是从HeaderedContentControl派生。我的意思是由未来的需求??可能要显示一个头,或按钮来激活/停用瓷砖。小学(简单)的要求
控制的行为是众所周知的,并且被定义在它的引进部分。这里是清单的要求,以实现这一行为。瓷砖需要被安排在一个统一的方式,活跃的地区之一获得更多的空间。
鉴于字段必须保持积极瓷砖轨道,我们ActiveTile的。
需要按比例划分的之间的ActiveTile的和其他的空间布局机制,所有的其他瓷砖平分剩余的空间。瓷砖变得活跃负载,以及任何其他的瓷砖可以使用鼠标激活。
瓷砖必须意识到鼠标事件,通知的TileView,激活时,对于这一点,我们需要的Activated事件。激活和失活,应该是动画和流畅。 ActiveTile比较大,需要这样一个无效的瓷砖两个转变:ScallingTransform - 使较大,TranslateTransform可 - 将它移动到主动的地位。带进行动的话
让我们来看看如何以相反的顺序来实现这些要求。动画瓷砖
如前所述,两个转换都参与了激活四个不同性质的瓷砖瓷砖。要移动瓷砖,以主动的地位,TranslateTransform可被用来和它在它的X和Y值,使瓷砖,ScaleTransform使用和它的宽度和高度值的作用。下面的代码演示如何做到这一点。这仅仅是表示值和实际的实现,从不同的代表性。

tile.RenderTransform = new TranslateTransform();



/* defining StoryBoard and animations */

Storyboard tileActivator = new Storyboard();

DoubleAnimation translateX = 

  new DoubleAnimation { From = 0, To = 10, Duration = TimeSpan.FromSeconds(1) };



/* Sets the target and the target property for the animation to operate */

Storyboard.SetTarget(translateX, tile);

Storyboard.SetTargetProperty(translateX, 

  new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));



/* Adds the animation to the StoryBorad and initiate the activation */

tileActivator.Children.Add(translateX);

tileActivator.Begin();

同样的方法用于所有四个属性的瓷砖作出积极从无效状态。瓷砖激活通知
的TileView时,必须通知用户通过鼠标点击激活它,这个实现定义了一个事件激活,只是覆盖向下的鼠标事件,提高活性炭的事件。 TileView监听激活该事件,并设置作为新ActiveTile的发件人。{C}
TileView"听此事件,将其转换为平铺发件人,并激活它。
tile.Activated += new RoutedEventHandler(OnTileActivated);



void OnTileActivated(object sender, RoutedEventArgs e)

{

    ActivateTile(sender as Tile);

}
排列瓷砖
在WPF的布局过程中发生两次传球:MeasureOverride和ArrageOverride,这两种解释在很多文章。前让孩子知道它的可用空间,并询问孩子的空间,它会采取。和前给它可以利用的空间。{体C3}历史16/11/2011 - 初始后。30/11/2011 - 新增更新的TileState API,源文件和演示文件。
希望这有助于!!编码快乐!

回答

评论会员:raistu 时间:2012/02/07
尼斯控制

的方式是实现这种控制使用如果我让说,在收集100瓷砖,要呈现的时间只有3瓷砖
评论会员:游客 时间:2012/02/07
?VallarasuS:谢谢,这个不可能的,你必须改变布局代码和动画代码。(字面一切)。关于Vallarasu小号|{A5}
raistu:哦,那OK,很好的控制,反正!保持良好的工作
评论会员:游客 时间:2012/02/07
Kanasz罗伯特:干得好
VallarasuS
评论会员:游客 时间:2012/02/07
感谢关于Vallarasu小号|{A5}
帕特里克・布莱克曼
评论会员:游客 时间:2012/02/07
只是在情况下,你想更新或增加新的功能,这个良好的控制,可能是你应该考虑定义两种状态:活跃和不​​活跃。处于活动状态的平铺视图的详细信息显示,处于非活动状态的瓷砖显示标题(标签)和图标描绘瓷砖的功能。感谢
VallarasuS
评论会员:游客 时间:2012/02/07
感谢,将更新它迟早找时间!{S2的}"关于VallarasuS|{A5的}
VallarasuS
评论会员:游客 时间:2012/02/07
TileState依赖项属性添加到瓷砖,现在你可以根据国家的不同模板。检查出更新的源代码和演示。{S2的}至于Vallarasu小号|{A5}
帕特里克・布莱克曼
评论会员:游客 时间:2012/02/07
感谢章,将新的源代码下载
。埃斯皮里图:很好
评论会员:游客 时间:2012/02/07
VallarasuS:感谢至于VallarasuS|{A5的}
帕特里克布莱克曼:我将如何修改你的代码,使瓷砖有一个固定的尺寸(高放宽),所以,选择瓷砖的最大可用空间和tles尺寸不调整时,控制大小只有选定的瓷砖面积
评论会员:VallarasuS 时间:2012/02/07
{的C4}
这两个代码在TileView.cs线这项工作,(活跃瓦需要高度的70%),使一个不断变化的,他们如下(均覆盖措施和安排覆盖),并确保有足够的空间。{ BR}
{C5的} 关于Vallarasu小号| {A5}
:帕特里克・布莱克曼:谢谢,非常酷的控制,你可能应该添加页眉和页脚来完成布局。再次感谢