第一次加载窗口时,我希望一个文本框被折叠起来,同时保持与我的视图模型中的属性(SomeProp)的绑定。
不幸的是,我无法做到这一点。
我尝试过的方法:
尝试1: 我尝试在视图模型的构造函数中显式将值设置为null,并显式调用Onpropertychanged。但转换器没有被触发。
尝试2: 在代码后台中,我将默认可见性设置为Collapsed。这似乎有一个副作用,即Visibility不再绑定到SomeProp属性。
尝试3: 在Google上搜索后,我发现了关于PriorityBinding的一些内容,但这似乎只适用于文本框的TEXT属性。 当绑定不能被评估因为空值时使用默认值 提前感谢您的帮助,
额外信息:
我有一个文本框,它只在我的ViewModel中的属性(SomeProp)具有值“Other”时才可见。 我成功地使用了一个转换器来实现这一点。这意味着每当我更改SomeProp的值时,文本框会根据SomeProp的值变得可见/不可见。 我使用了以下代码: WPF:按字符串内容绑定可见性 有人知道如何将文本框的可见性设置为Collapsed,同时保持对属性SomeProp的绑定吗?
XAML
不幸的是,我无法做到这一点。
我尝试过的方法:
尝试1: 我尝试在视图模型的构造函数中显式将值设置为null,并显式调用Onpropertychanged。但转换器没有被触发。
尝试2: 在代码后台中,我将默认可见性设置为Collapsed。这似乎有一个副作用,即Visibility不再绑定到SomeProp属性。
尝试3: 在Google上搜索后,我发现了关于PriorityBinding的一些内容,但这似乎只适用于文本框的TEXT属性。 当绑定不能被评估因为空值时使用默认值 提前感谢您的帮助,
额外信息:
我有一个文本框,它只在我的ViewModel中的属性(SomeProp)具有值“Other”时才可见。 我成功地使用了一个转换器来实现这一点。这意味着每当我更改SomeProp的值时,文本框会根据SomeProp的值变得可见/不可见。 我使用了以下代码: WPF:按字符串内容绑定可见性 有人知道如何将文本框的可见性设置为Collapsed,同时保持对属性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>
转换器
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
,当绑定或转换失败时应用该值。 - Mike Strobel