[英]Set default value in XAML if binding is null
编辑
这不是字符串null值的后备的重复。 我要求对复杂类型进行后备。
原始问题
这是我昨天问的一个问题的后续问题:
对我来说,可接受的答案的核心部分是:
<Window.Resources>
<DataTemplate DataType="{x:Type local:SettingsPathSelectorViewModel}">
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding SettingsPath}" />
<Button
Content="..."
Command="{Binding OpenFile}"
HorizontalAlignment="Left"
MinWidth="40"
Margin="4,0,0,0"
/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<StackPanel Orientation="Vertical">
<Label>First Path</Label>
<ContentControl Content="{Binding FirstPath}" />
</StackPanel>
</Grid>
将为自定义类型创建一个DataTemplate
,然后将ContentControl
绑定到该类型的属性。
现在的问题是,该属性(示例中的FirstPath
)可能为null
并且没有呈现UI元素。 即使属性为null
如何完成从DataTemplate
呈现控件的操作
正如Evk所建议的,我已经实现了一个Converter:
public class PathSelectorConverter : IValueConverter
{
public object Convert(object o, Type type, object parameter, CultureInfo culture)
{
return o ?? new PathSelector();
}
public object ConvertBack(object o, Type type, object parameter, CultureInfo culture)
{
return o ?? new PathSelector();
}
}
我在窗口中添加了转换器实例作为资源:
<view:PathSelectorConverter x:Key="pathSelectorConverter"/>
并将其添加到该属性的绑定中:
但是仅在值不为null时才调用转换器
我在另一个问题中找到了这个问题的答案(代码来自Clemens):
<Window.Resources>
<model:PathSelector x:Key="FallbackPathSelector" />
</Window.Resources>
...
<ContentControl Content="{Binding MyPathSelector,
FallbackValue={StaticResource FallbackPathSelector}}"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.