Я хочу установить видимость элементов TextBox на основе их привязок.
Пример: TextBoxes со значениями цен для двух продуктовУстановить видимость элемента по значению модели
<TextBox Grid.Column="1" Grid.Row="3" Text="{Binding PriceProduct0, Mode=TwoWay}" />
<TextBox Grid.Column="2" Grid.Row="3" Text="{Binding PriceProduct1, Mode=TwoWay}" />
В моей модели я запрашиваю необходимые значения из службы WCF и вызвать NotifyPropertyChanged обновить свою точку зрения.
Проблема: в некоторых сценариях нет значений для моих свойств. В этом случае я хочу скрыть элемент пользовательского интерфейса. Есть ли простой способ, может быть, подняв событие?
Большинство свойств являются двойными или булевыми, поэтому я не могу установить их NULL.
Решения:
Я нашел решение, благодаря Ахмеду и DHN!
Здесь все шаги:
- Изменить все Ненулевые свойства к nullables, например,
public double? PriceProduct0
- Добавить ссылку на следующий .dll, если вы не можете найти пространство имен
Microsoft.TeamFoundation.Controls.WPF.Converters
:
<VSHome>\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Controls.dll
- Добавить
xmlns:myConverters="clr-namespace:Microsoft.TeamFoundation.Controls.WPF.Converters;assembly=Microsoft.TeamFoundation.Controls"
атрибуту<Page>
- Добавить
<Page.Resources>
<myConverters:NullToVisibleConverter x:Key="NullToVisibleConverter" />
</Page.Resources> - Добавить следующую видимость параметр к атрибуту
<TextBox>
:
Visibility="{Binding PriceProduct0, Converter={StaticResource NullToVisibleConverter}, ConverterParameter='invert' }"
+1 - Ницца, не знал, что есть класс из коробки. – DHN
Спасибо Ahmed и DHN, но мои свойства в основном двойные или логические. Поэтому я не могу установить их NULL или я понял sth. неправильно? – user60333
Нашли решение, изменив их на Nullable (см. Мой пост) –
user60333