Zdravím, předchozí problém jsem nakonec částečně vyřešil, ale nastal další problém. Binding z pro mne neznámého důvodu prostě nefunguje.
progressBar je komponenta ProgressBar umístěná ve formuláři. Zbytek kódu hlídače funguje dobře. Dokonce i ProcentUplynulose mění jak má.
public partial class MainPage : UserControl
{
IntervalovyHodinovyStrojek interval;
MediaElement prehravac;
HlidacHodinovehoStrojku hlidacProgres1;
public MainPage()
{
//http://www.robtowns.com/music/blind_willie.mp3
//http://petrroll.asp2.cz/songs/gong.wav
InitializeComponent();
inicializujZvuk();
interval = new IntervalovyHodinovyStrojek(new TimeSpan(0,0,5));
interval.eTikTak += () => pomocneMetody.ZahrajZvuk(prehravac);
hlidacProgres1 = new HlidacHodinovehoStrojku();
Binding progressBind = new Binding();
progressBind.Path = new PropertyPath("ProcentUplynulo"); ;
progressBind.Mode = BindingMode.OneWay;
progressBind.Source = hlidacProgres1;
progressBar.SetBinding(ProgressBar.ValueProperty, progressBind);
hlidacProgres1.HlidanyObjekt = interval;
}
private void inicializujZvuk()
{
//smazatGong
prehravac = new MediaElement();
prehravac.AutoPlay = false;
//prehravac.Source = new Uri("http://www.robtowns.com/music/blind_willie.mp3", UriKind.Absolute);
prehravac.Source = new Uri("http://www.petrroll.asp2.cz/songs/gong.MP3", UriKind.Absolute);
LayoutRoot.Children.Add(prehravac);
}
private void button1_Click_1(object sender, RoutedEventArgs e)
{
interval.IsEnabled = true;
//progressBar.Value = 50;
}
}
class HlidacHodinovehoStrojku : HodinovyStrojek, INotifyPropertyChanged
{
...
private int procentUplynulo;
public int ProcentUplynulo
{
get { return procentUplynulo; }
set { procentUplynulo = value; NotifyPropertyChanged("ProcentUplynulo"); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
...
}