WPF ProgressBar 綁定

界面

<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"));
            }
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章