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

Вы должны инициализировать переменную перед ее использованием. Если команда if не работает, эта переменная останется неинициализированной:

 System.out.println("Primary Weapon: " + primaryWeapon); 

Итак, если вы ее объявите, сравните ее с "":

String primaryWeapon = ""; //The gun you get
2
задан DenseCrab 7 March 2019 в 12:59
поделиться

2 ответа

Первый вариант: конвертер

Для этого можно использовать конвертер. Например:

 <t:FooterTemplate Text="{Binding SourceFooter }" IsVisible="{Binding SourceFooter, Converter={StaticResource StringEmptyConverter} }" />

И тогда конвертер выглядит так:

    public class StringEmptyConverter : IValueConverter {

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
            return !String.IsNullOrWhiteSpace(((string)value));
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
            throw new NotImplementedException();
        }
    }

Преобразователь просто возвращает false, если строка пустая или пустая.

Чтобы использовать его в качестве StaticResource, вам, конечно, также необходимо добавить строку в ResourceDictionary в файле App.xaml.

            <converters:StringEmptyConverter x:Key="StringEmptyConverter" />

Второй вариант: DataTrigger

Триггеры могут изменять свойства визуального элемента. Как следует из названия: они срабатывают, когда определенное свойство (SourceFooter) равно определенному значению ("").

<t:FooterTemplate Text="{Binding SourceFooter}" >
 <t:FooterTemplate.Triggers>
   <DataTrigger
    Binding="{Binding SourceFooter}"
    TargetType="t:FooterTemplate"
    Value="">
        <Setter Property="IsVisible" Value="false" />
    </DataTrigger>
 </t:FooterTemplate.Triggers>
</t:FooterTemplate>

Что мне использовать?

В этом случае вам следует перейти к решению Converter. Вы, вероятно, будете проверять, пуста ли строка где-то еще в вашем приложении. На мой взгляд, DataTriggers могут быть полезны для более экзотических «триггеров».

0
ответ дан DenseCrab 7 March 2019 в 12:59
поделиться

вы можете использовать конвертер на стороне XAML, но для простоты использования вы можете добавить одно свойство в модель public bool IsEmpty и установить его в соответствии со значением вашего SourceFooter и связать IsEmpty со свойством visible.

0
ответ дан sudesh regmi 7 March 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: