0
这不是字符串空值回退的副本。我正在寻求复杂类型的后备。
原来的问题
这是一个后续问题的问题,我昨天问过:
Bind WPF Command to ViewModel property in C# XAML
接受的答案给我的核心部分是这样的:
<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>
A DataTemplate
是为自定义类型创建的, n a ContentControl
被绑定到该类型的属性。
现在的问题是,属性(示例中的FirstPath
)可能是null
并且不呈现UI元素。我怎么能做到从DataTemplate
呈现的控制,即使该属性是null
由于EVK建议我已经实现了一个转换器:
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而是? – Evk
@Evk不幸的是没有。我有一个可以选择的元素列表,每个元素都有一个'FirstPath'属性。如果元素List是空的,我有这种不希望的行为。 –
然后,您可以使用转换器,如果提供的值为null,将返回SettingsPathSelectorViewModel的某个默认实例。 – Evk