Je suis effectivement en SL 4,pour le code je vais mettre des bouts lisible je l'espère je peux pas vraiment montrer tout le source :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| internal class TimePart : PartControl
{
internal TimePart()
{
DefaultStyleKey = typeof(TimePart);
}
protected override void RefreshStates(bool useTransition)
{
VisualStateManager.GoToState(this, IsSelected ? VisualStates.StateSelected : VisualStates.StateUnselected, useTransition);
VisualStateManager.GoToState(this, IsMouseOver ? VisualStates.StateMouseOver : VisualStates.StateNormal, useTransition);
}
}
} |
PartControl est juste une asbtract class qui hérite de Control et qui ajoute quelques abstract property & methods
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
/// <summary>
/// Base class for all the visual parts representing a DatetimeRange
/// </summary>
internal abstract class PartControl : Control
{
private DateTimeRange _dateRange;
private bool _isSelected;
internal DateTimeRange DateRange
{
get { return _dateRange; }
set
{
if (_dateRange == value) return; _dateRange = value;
}
}
internal bool IsSelected
{
get
{
return _isSelected;
}
set
{
if (value == _isSelected) return;
_isSelected = value;
RefreshStates(true);
}
}
internal PartContainer ParentPartContainer { get; set; }
internal int Index { get; set; }
protected abstract void RefreshStates(bool useTransitions);
etc ..... |
et XAML :
xmlns:local="clr-namespace:FSControls"
1 2 3 4 5
| <Style TargetType="local:TimePart">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:TimePart">
etc .... |
Je précise que j'ai fait le test en utilisant directement Control aucun problème
Partager