2015-07-24 2 views
1

У меня есть 3 флажка в файле xaml.Name сидеть, стоять, спать. Extype, имеющие следующие значения 1,2,3Значение привязки в чекбоксе silverlight

CheckBox Content="Sit" Margin="127,89,212,136" IsChecked="{Binding Extype}" RenderTransformOrigin="1.817,-1.029"/> 

CheckBox Content="Stand" Margin="127,89,212,136" IsChecked="{Binding Extype}" RenderTransformOrigin="1.817,-1.029"/> 

CheckBox Content="Sleep" Margin="127,89,212,136" IsChecked="{Binding Extype}" RenderTransformOrigin="1.817,-1.029"/> 

Если значение Extype является один означает, что я должен выбрать Sit флажок.

Если значение Extype равно , то два означает, что мне нужно установить подставку.

Если значение Extype равно , то три означает, что мне нужно установить оба флажка.

Как это сделать?

+0

Написать конвертер. – Herdo

+0

Напишите 3 конвертера. –

+0

требуется только один преобразователь и передать параметр конвертеру для идентификации флажка, пожалуйста, проверьте это [ссылка] (http://timheuer.com/blog/archive/2008/07/30/format-data-in-silverlight- databinding-valueconverter.aspx) –

ответ

0

XAML:

<CheckBox Content="Sit" IsChecked="{Binding IsSit, Mode=OneWay}" IsEnabled="False"/> 
<CheckBox Content="Stand" IsChecked="{Binding IsStand, Mode=OneWay}" IsEnabled="False"/> 
<CheckBox Content="Sleep" IsChecked="{Binding IsSleep, Mode=OneWay}" IsEnabled="False"/> 

ViewModel:

public bool IsSit 
{ 
    get 
    { 
     return ExtType == 1 || ExtType == 3; 
    } 
} 

public bool IsStand 
{ 
    get 
    { 
     return ExtType == 2 || ExtType == 3; 
    } 
} 

private int _extType; 
public int ExtType 
{ 
    get 
    { 
     return _extType; 
    } 

    set 
    { 
     _extType = value; 
     RaisePropertyChanged("IsSit"); 
     RaisePropertyChanged("IsStand"); 
    } 
} 
+0

Здесь отсутствует код. Где 'IsStand' и' IsSleep'? Не говоря уже о том, что это не будет работать, поскольку эти свойства ** доступны только для чтения **. Вам нужно будет добавить ** seters **. –

+0

@MikeEason Если вы прочитали вопрос, в нем упоминается настройка IsChecked на Sit and Stand. Он также упоминает установку IsChecked на основе значения ExtType, а не из пользовательского интерфейса. –

0

Вы можете использовать ValueConverter с параметром. Используйте один и тот же ValueConverter в каждом флажке, но измените значение параметра.

<CheckBox Content="Sit" IsChecked="{Binding Extype, Converter={StaticResource YourConverter}, ConverterParameter=Sit}" /> 
<CheckBox Content="Standup" IsChecked="{Binding Extype, Converter={StaticResource YourConverter}, ConverterParameter=Standup}" /> 

Вот пример ValueConverter с параметрами: http://wpftutorial.net/ValueConverters.html

(Не забудьте добавить ValueConverter как ресурс.)

А затем поставить код бизнес-логики внутри ValueConverter или даже лучше , вызовите функцию в своем бизнес-слое.

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