2013-10-09 2 views
3

В моем приложении WPF я пытаюсь связать свойство «Максимум» с элементом управления «ProgressBar» с свойством ViewModel (с помощью Caliburn.micro).Использование ProgressBar с Caliburn.micro

View (XAML):

<ProgressBar x:Name="CurrentProgress"/> 

ViewModel:

private int currentProgress; 
public int CurrentProgress 
{ 
    get { return currentProgress; } 
    set 
    { 
    if (currentProgress == value) 
    { 
     return; 
    } 

    currentProgress = value; 
    NotifyOfPropertyChange(() => CurrentProgress); 
    } 
} 

Вопрос: Есть ли способ, с Caliburn.micro связать также максимальное значение. Я попытался создать объект вроде:

private int maximumProgress; 
public int MaximumProgress 
{ 
    get { return maximumProgress; } 
    set 
    { 
    if (maximumProgress == value) 
    { 
     return; 
    } 

    maximumProgress = value; 
    NotifyOfPropertyChange(() => MaximumProgress); 
    } 
} 

Но это не работает. Я также искал в документации Caliburn, но не смог найти там никакой помощи.

Спасибо за вашу помощь

ответ

4

Вы можете связать ProgressBar.Maximum как и любой другой DependencyProperty. Это должно работать:

<ProgressBar x:Name="CurrentProgress" Maximum="{Binding Path=MaximumProgress}"/> 

Ваш x:Name="CurrentProgress" превращается в Value="{Binding Path=CurrentProgress, Mode=TwoWay}" так что-то, как это должно работать:

<ProgressBar Value="{Binding Path=CurrentProgress}" Maximum="{Binding Path=MaximumProgress}"/> 
+0

спасибо за ваш ответ. правильно, ваш ответ работает. но я подумал, что «калибр» позволяет ему связывать это свойство над конвенцией. – rhe1980

+0

Я так не думаю. Насколько я знаю, Caliburn.Micro не поддерживает более одного соглашения на 'FrameworkElement' – dkozl

+0

Должен быть способ настроить его, ItemsControl связывает как SelectedItem, так и ItemSource. Я надеялся, что кто-то еще проделал тяжелую работу, но я думаю, мне придется это сделать самому .... –

Смежные вопросы