プログレス長方形[画像を参照]を使用してスライダーを開発しています。このコードは、幅を動的に設定するために機能しません
public class AudioSlider : Slider, INotifyPropertyChanged {
public AudioSlider() {
DefaultStyleKey = typeof(AudioSlider);
}
#region PropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name) {
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(name));
}
#endregion
private double _trwidth;
public double TrackProgressWidth {
get { return _trwidth; }
set {
_trwidth = value; OnPropertyChanged("TrackProgressWidth");
}
}
...
xaml. デフォルトのスタイル...
<Rectangle x:Name="HorizontalFillLoaded" Height="12" MaxWidth="{Binding TrackProgressWidthMax,ElementName=audio}" Width="{Binding TrackProgressWidth,ElementName=audio}" IsHitTestVisible="False" Grid.Column="1" Fill="Black" Margin="0,0,0,28" />
....
「HorizontalFillLoaded」の幅を変更する必要があります。
var t=new AudioSlider();
t.SetDownloadedProgress(50);//50%