我有一个可观察的对象集合绑定到tabcontrol,我通过将它绑定为itemssource来生成制表符
<TabControl x:Name="tabSubmodule" ItemsSource="{Binding}" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TabStripPlacement="Left">
<TabControl.ItemTemplate>
<DataTemplate>
<!--
<TextBlock Text="{Binding ., Converter={StaticResource NameConverter}}"/>
<Label Content="{Binding ., Converter={StaticResource NameConverter}}"/>
-->
<ContentPresenter Content="{Binding ., Converter={StaticResource NameConverter}}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding ., Converter={StaticResource NameConverter}}"/>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
我习惯在itemtemplate中触发Converter,并根据对象生成选项卡的名称和其他一些东西。如您所见,绑定在整个对象上发生(Path)。 我在转换器的ConvertMethod中有一个断点。它触发得很好。
问题是,当断点从ItemTemplate触发时,该方法的“value”参数始终为null。我尝试将其设置为各种控件(因为对象或字符串期望 - 内容,文本propetty)。没有。 它始终为空
当转换器从Contenttemplate触发时,该值不为null,而是预期的对象。
有什么建议吗?
答案 0 :(得分:0)
我通常在转换器中进行健全性检查,如果值为null,则返回Binding.DoNothing
。有时您的转换器将获得空值。关键是不要抛出异常。