Привязать DatePicker.IsEnabled к ComboBoxItem.IsSelected - PullRequest
0 голосов
/ 25 августа 2018

У меня есть ComboBox с двумя опциями, как показано ниже:

<ComboBox Name="TypeComboBox">
    <ComboBoxItem Name="TemporaryComboItem">Temporary</ComboBoxItem>
    <ComboBoxItem Name="PermanentComboItem">Permanent</ComboBoxItem>
</ComboBox>

Если выбрана опция «Временная», у меня есть DatePicker для выбора даты истечения срока действия, как показано ниже:

<DatePicker
    Name="ExpirationDatePicker"
    IsEnabled="{Binding TemporaryComboItem.IsSelected}" 
/>

Однако это Binding, похоже, не работает, так как DatePicker может использоваться независимо от выбранной опции.

Как я могу иметь DatePicker, чтобы он работал только тогда, когда один изварианты выбраны?

1 Ответ

0 голосов
/ 25 августа 2018

Слегка грязный раствор:

<ComboBox Name="TypeComboBox">
    <ComboBoxItem Name="TemporaryComboItem" Tag="True">Temporary</ComboBoxItem>
    <ComboBoxItem Name="PermanentComboItem" >Permanent</ComboBoxItem>
</ComboBox>

<DatePicker Name="ExpirationDatePicker"
            IsEnabled="{Binding ElementName=TypeComboBox, Path=SelectedItem.Tag, FallbackValue=False}" />

Обратите внимание, как я установил свойство Tag для временного элемента и изменил привязку для свойства IsEnabled. Теперь привязка «смотрит» на тег выбранного элемента в выпадающем списке. Если его там нет, по умолчанию используется значение false.

Это «злоупотребляет» свойством Tag. В общем, я бы посоветовал против этого, так как неясно, что делает / означает свойство Tag.

Надлежащим способом может быть привязка всех этих элементов пользовательского интерфейса к ViewModel, чтобы DatePicker мог связываться со свойством ViewModel, которое более четко выражает значение / использование.

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