WP7 ProgressBar прерывается, когда значение превышает минимальное или максимальное значение - PullRequest
1 голос
/ 20 февраля 2012

Визуальный аспект WP7 ProgressBar перестает работать, когда значение превышает минимальное или максимальное.В частности, когда минимальное или максимальное значение превышено, а затем значение возвращается к значению между минимальным и максимальным, ProgressBar либо застревает в полностью темном или полностью заполненным (для минимального и максимального соответственно).

Вотмой тестовый код, если кто-то из вас заинтересован в воспроизведении этого.Как мне обойти это?

Кстати, я должен добавить, что мои минимальное и максимальное значения меняются, и значение иногда естественным образом превышает эти значения.

XAML:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <Button Click="Button_Click" Width="150" Height="100" VerticalAlignment="Top">Up</Button>
        <Button Click="Button_Click_1" Width="150" Height="100" VerticalAlignment="Top" HorizontalAlignment="Right">Down</Button>
        <ProgressBar x:Name="PBar" Value="{Binding Progress}" Maximum="{Binding Maximum}"></ProgressBar>
        <TextBlock Text="{Binding Progress}" VerticalAlignment="Bottom"/>
    </Grid>

C #:

using System.ComponentModel;

public partial class MainPage : PhoneApplicationPage, INotifyPropertyChanged
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        this.LayoutRoot.DataContext = this;
        Maximum = 100;
    }

    private int _progress;
    public int Progress
    {
        get { return _progress; }
        set
        {
            _progress = value;
            NotifyPropertyChanged("Progress");
        }
    }

    private int _maximum;
    public int Maximum
    {
        get { return _maximum; }
        set
        {
            _maximum = value;
            NotifyPropertyChanged("Maximum");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Progress += 10;
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        Progress -= 10;
    }
}

1 Ответ

0 голосов
/ 20 марта 2012

Я собираюсь ответить на свой вопрос здесь, согласно моему комментарию выше. Ответ, который я закончил, был:

"Немного изменив мою DomainModel, чтобы мой XAML связывался с другим свойством, которое проверяет, превышены ли минимальное и максимальное значения, и, если они есть, возвращает только минимальное или максимальное."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...