界面
<Window x:Class="ProgressBarBindingTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<!--<ProgressBar Name="progressBar" Grid.Row="1" Margin="0,10,5,0" MaxWidth="320" Maximum="100" Height="50" Value="{Binding BatterySOH}">
</ProgressBar>-->
<ProgressBar Name="progressBar" Grid.Row="1" Margin="0,10,5,0" MaxWidth="320" Maximum="100" Height="50" >
<ProgressBar.Value>
<Binding Path="BarBindingVal" Mode="TwoWay" ></Binding>
</ProgressBar.Value>
</ProgressBar>
<TextBox HorizontalAlignment="Left" Height="30" Margin="107,238,0,0" TextWrapping="Wrap" Text="0" VerticalAlignment="Top" Width="127" Name="tbBarVal"/>
<Button Content="更 新" HorizontalAlignment="Left" Height="30" Margin="315,238,0,0" VerticalAlignment="Top" Width="95" Name="btnUpdateBar" Click="btnUpdateBar_Click"/>
</Grid>
</Window>
cs 文件
using System.ComponentModel;
using System.Windows;
namespace ProgressBarBindingTest
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
ProgressBarBinding pbb = new ProgressBarBinding();
bool isIncrease = true;
public MainWindow()
{
InitializeComponent();
progressBar.DataContext = pbb;
tbBarVal.Text = "20";
}
private void btnUpdateBar_Click(object sender, RoutedEventArgs e)
{
if ((pbb.BarBindingVal < 100 && isIncrease)|| pbb.BarBindingVal <= 0 )
{
if (string.IsNullOrEmpty(tbBarVal.Text) || 0 == int.Parse(tbBarVal.Text))
pbb.BarBindingVal += 10;
//progressBar.Value = 20;
else
pbb.BarBindingVal += int.Parse(tbBarVal.Text);
isIncrease = true;
}
else
{
pbb.BarBindingVal -= int.Parse(tbBarVal.Text);
isIncrease = false;
}
}
}
public class ProgressBarBinding : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, e);
}
private float barBindingVal;
public float BarBindingVal
{
get { return barBindingVal; }
set
{
barBindingVal = value;
OnPropertyChanged(new PropertyChangedEventArgs("BarBindingVal"));
}
}
}
}