ComponenetOne
磁砖的内容(Tile Content) 你可以很容易地改变瓷砖内容,通过C1Tile的Content属性。在瓷砖未冻结,在改变了Content属性会强制自己动画起来。这样,就没有必要再调用任何其他方法进行动画动作。如果您还需要动画起来,则你可以在更新内容的瓷砖前将IsFrozen属性设置为False,然后将其设置回为True。代码如下:1: private void Tile2_Change(object sender, RoutedEventArgs e) 2: { 3: int age; 4: Int32.TryParse(txtAge.Text, out age); 5: if (age > 18 ) 6: { 7: tile.Content = 8: 'You are an Adult !'; 9: } 10: else 11: { 12: tile.Content = 13: 'You are still a Kid !'; 14: } 15: //tile.IsFrozen = true; 16: } 17:
更新内容模板 有时,你不希望变更内容,而是要更改整个内容的模板。在这种情况下,您可以使用自定义DataTemplateSelector。该模板将如下所示: 1:
在后台代码中,需要创建一个从C1DataTemplateSelector继承了ContentTemplateSelector的类。下面是类的定义: 1: public class ContentTemplateSelector : C1.Silverlight.C1DataTemplateSelector 2: { 3: public bool Back { get; set; } 4: public override DataTemplate SelectTemplate(object item, DependencyObject contain er) 5: { 6: // select different content template depending on condition 7: return (Back ? base.Resources['BackContentTemplate'] : base.Resources['ContentTe mplate']) as DataTemplate; 8: } 9: } 10:
最后,在单击按钮,您可能会使用如下代码来更新事件方法: 1: private void FlipTile(object sender, RoutedEventArgs e) 2: { 3: // enable animation 4: secondTile.IsFrozen = false; 5: // change condition in ContentTemplateSelector 6: _templateSelector.Back = !_templateSelector.Back; 7: // force animation 8: secondTile.UpdateTile(); 9: // disable animation 10: secondTile.IsFrozen = true; 11: // if you don't want animations while content is not changed, set tile.IsFrozen to true and only turn on it while you change content 12: // tile.IsFrozen = false; 13: } 14: