При первой загрузке окна я хочу, чтобы текстовое поле было свернуто, сохраняя привязку к свойству (SomeProp) в моей модели Viewmodel.Привязка значения по умолчанию к видимости, если значение по умолчанию равно null в ViewModel
К сожалению, я не могу этого сделать.
что я пробовал:
Попытка 1: Я попытался установить в явной форме значение NULL в конструкторе ViewModel, а также явно вызвать OnPropertyChanged. Конвертер не запускается.
Попытка 2: В коде позади я установил видимость по умолчанию для видимости. Завершена. это похоже на побочный эффект, что видимость больше не связана с свойством SomeProp.
Покушение 3: После прибегая к помощи я нашел кое-что о PriorityBinding, но это, кажется, работает только на TEXT свойство текстового поля Use a default value when binding cannot be evaluated because of a null value
Спасибо заранее,
Дополнительная информация:
У меня есть текстовое поле, и оно должно быть видимым только в том случае, если свойство (SomeProp) в моей ViewModel имеет значение «Другое». Я успешно использую Convertor для этого. Это означает, что всякий раз, когда я изменяю значение SomeProp, текстовое поле становится видимым/невидимым в зависимости от значения SomeProp. Я использовал следующий код: WPF: Binding Visibility by string contents
Кто-нибудь знает, как я могу установить тэ текстового поле видимость для Свернутых при сохранении привязки к собственности SomeProp.
XAML
<TextBox Name="txtbox" Visibility="{Binding SomeProp.Description, Converter={StaticResource StringOtherToVisibilityConverter}}" TextWrapping="Wrap" Height="150" MaxLength="2000"
Text="{Binding SomeProp2.Text, Mode=TwoWay}"
ScrollViewer.VerticalScrollBarVisibility="Auto" AcceptsReturn="True">
</TextBox>
Convertor
class StringOtherToVisibilityConverter : System.Windows.Markup.MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
if (value.ToString() == "Other")
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
else
{
return Visibility.Collapsed;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null; //DependencyProperty.UnsetValue;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
Установка 'TargetNullValue = {x: Static Visibility.Collapsed}' должна свернуть цель привязки, когда исходное значение равно null. Вы также можете установить 'FallbackValue', который применяется, когда сбой привязки или преобразования завершается с ошибкой. –
TargetNullValue не работает. Может быть, потому, что я использую SomeProp.Description, а SomeProp - null? FallBackValue с другой стороны делает работа. Благодарю. Если вы ответите, я соглашусь. – user1841243