Вы должны инициализировать переменную перед ее использованием. Если команда if
не работает, эта переменная останется неинициализированной:
System.out.println("Primary Weapon: " + primaryWeapon);
Итак, если вы ее объявите, сравните ее с ""
:
String primaryWeapon = ""; //The gun you get
Первый вариант: конвертер
Для этого можно использовать конвертер. Например:
<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 могут быть полезны для более экзотических «триггеров».
вы можете использовать конвертер на стороне XAML, но для простоты использования вы можете добавить одно свойство в модель public bool IsEmpty
и установить его в соответствии со значением вашего SourceFooter
и связать IsEmpty со свойством visible.