为什么我的工具提示不会显示为列表框

时间:2015-10-05 12:34:36

标签: wpf xaml

当我使用以下内容时,我看到一个工具提示,但它不是显示为ListView,而是显示为System.Window.DataTemplate的单个工具提示。

我想我已经解释了要使用的DataTemplate ...为什么下面没有显示DataTemplate的结果而只是'类型'

<DataTemplate DataType="{x:Type ToolTip}" x:Key="Tool">
        <ListView DataContext="{Binding Path=MyMix}" ItemsSource="{Binding Path=Mix}" ItemTemplate="{StaticResource MyTemplate}" />
    </DataTemplate>

    <DataTemplate x:Key="MyButtons">
        <StackPanel>
            <ComboBox SelectedIndex="{Binding Path=MyIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}" ItemsSource="{Binding Path=MyCollection}" DisplayMemberPath="Name" Binding.SourceUpdated="ComboBox_SourceUpdated" ToolTip="{StaticResource Tool}">                    
            </ComboBox>
        </StackPanel>
    </DataTemplate>

1 个答案:

答案 0 :(得分:0)

从我所看到的,你没有实例化ToolTip的实例,所以没有创建。 (模板不会实现ToolTip,而在ComboBox中只有ToolTip属性的赋值,它有效地将TypeConverter调用到DataTemplate类。)

我试过这段代码......

<Grid.Resources>
    <DataTemplate DataType="{x:Type MyMix}">
        <ToolTip>
            <ListView ItemsSource="{Binding Mix}"></ListView>
        </ToolTip>
    </DataTemplate>           
</Grid.Resources>

但这给了我这个错误:&#39; ToolTip&#39;不能有逻辑或视觉父母

我不确定的另一件事:Aren&#39; t DataTemplates更多用于&#34;源对象&#34;,这意味着数据?在您的代码中,用于DataTemplate的类型是可视类,ToolTip


<强>解决方案吗

所以我最终直接在ComboBox上设置工具提示。 这对你好吗? 我不确定我是否正确理解了您的数据模型。 它有效,但因为它不是模板,所以此工具提示在其他任何地方都无法重复使用。

    <StackPanel>
        <ComboBox ItemsSource="{Binding MyCollection}" DisplayMemberPath="Name">
            <ComboBox.ToolTip>
                <ListView ItemsSource="{Binding Path=MyMix.Mix}" ></ListView>
            </ComboBox.ToolTip>
        </ComboBox>
    </StackPanel>