私はWPFでProgressBarのvalueプロパティをデータバインドしようとしています。 ProgressBarのValueのdatabound intプロパティをインクリメントするように設定されたボタンがあります。私がボタンを押すと、ProgressBarの値が1から100までカウントアップされるはずです。しかし、それは動作していないように見えますし、何が間違っているのか分かりません。ここに私のXAMLは、ウィンドウのDataContextの設定を一切コード(投稿)がありません...ここWPF ProgressBar with valueデータバインディング
<Window x:Class="ProgressBarExample2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="250" Width="400" Background="WhiteSmoke">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
<Button Name="goButton" Height="30" Width="50" Margin="0,10,0,50" Click="goButton_Click">GO!</Button>
<ProgressBar Name="progressBar" Width="300" Height="30" Value="{Binding Percent, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
とは、私のコードが背後にある...
public partial class MainWindow : Window, INotifyPropertyChanged
{
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChange(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
private int percent = 0;
public int Percent
{
get { return this.percent; }
set
{
this.percent = value;
NotifyPropertyChange("Percent");
}
}
public MainWindow()
{
InitializeComponent();
}
private void goButton_Click(object sender, RoutedEventArgs e)
{
for (Percent = 0; Percent <= 100; Percent++)
{
Thread.Sleep(50);
}
}
}
のクリックイベントで使用を宣言することができ、あなたはおそらく、タイマーを開始クリックボタンのtimer-を追加してみてくださいすることができます。タイマーコールバックインクリメントでは、適切なデータバインディングを使用してPercent-を実行するだけで済みます。タイマーのコールバックはバックグラウンドスレッドにあるので、メインスレッドはプログレスバーを自由に更新することができます – Sarang