为什么转换器在绑定时没有收到值

时间:2013-08-17 21:01:18

标签: c# wpf binding tabcontrol datacontext

我有一个可观察的对象集合绑定到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,而是预期的对象。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我通常在转换器中进行健全性检查,如果值为null,则返回Binding.DoNothing。有时您的转换器将获得空值。关键是不要抛出异常。