C# 如果绑定为null,则在XAML中设置默认值
编辑 这不是字符串空值的回退的重复。我要求一个复杂类型的后备方案 原始问题 这是我昨天问的一个问题的后续问题: 我接受的答案的核心部分是:C# 如果绑定为null,则在XAML中设置默认值,c#,wpf,xaml,data-binding,datatemplate,C#,Wpf,Xaml,Data Binding,Datatemplate,编辑 这不是字符串空值的回退的重复。我要求一个复杂类型的后备方案 原始问题 这是我昨天问的一个问题的后续问题: 我接受的答案的核心部分是: <Window.Resources> <DataTemplate DataType="{x:Type local:SettingsPathSelectorViewModel}"> <StackPanel Orientation="Horizontal"> <TextBo
<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资源的实例:
<view:PathSelectorConverter x:Key="pathSelectorConverter"/>
并将其添加到属性的绑定中:
但是,只有当值不为null时才会调用转换器。我在我的另一篇文章中找到了这个问题的答案。代码来自Clemens:
<Window.Resources>
<model:PathSelector x:Key="FallbackPathSelector" />
</Window.Resources>
...
<ContentControl Content="{Binding MyPathSelector,
FallbackValue={StaticResource FallbackPathSelector}}"/>
我在我的另一本书中找到了这个问题的答案代码来自克莱门斯:
<Window.Resources>
<model:PathSelector x:Key="FallbackPathSelector" />
</Window.Resources>
...
<ContentControl Content="{Binding MyPathSelector,
FallbackValue={StaticResource FallbackPathSelector}}"/>
你不能确保它永远不为空吗?@Evk不幸地不是。我有一个可以从中选择的元素列表,每个元素都有FirstPath属性。如果元素列表为空,我会有这种不希望出现的行为。然后,如果提供的值为null,您可以使用转换器返回SettingsPathSelectorViewModel的一些默认实例。@Evk您是否有指向此类转换器描述的链接?如果使用绑定的TargetNullValue怎么办?您不能确保它从不为null吗?@Evk不幸的是没有。我有一个可以从中选择的元素列表,每个元素都有FirstPath属性。如果元素列表为空,则我有这种不希望出现的行为。然后,如果提供的值为null,您可以使用转换器返回SettingsPathSelectorViewModel的某个默认实例。@Evk是否有指向此类转换器描述的链接?如果使用绑定的TargetNullValue怎么办?