【问题标题】:How do I display a List of items inside a tooltip?如何在工具提示中显示项目列表?
【发布时间】:2016-12-22 12:31:42
【问题描述】:

我的应用程序中的按钮应用了以下样式

<Style x:Key="ButtonPartChooserValidation" TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}">
    <Setter Property="Background" >
        <Setter.Value>
            <Binding Path="(Validation.Errors)" RelativeSource="{RelativeSource Self}">
                <Binding.Converter>
                    <converters:ValidationErrorsToBackgroundColorConverter/>
                </Binding.Converter>
            </Binding>
        </Setter.Value>
    </Setter>
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate/>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="True">
            <Setter Property="ToolTip" Value="{Binding (Validation.Errors).[0].ErrorContent.Value[0], RelativeSource={x:Static RelativeSource.Self}}">                    
            </Setter>
        </Trigger>
        <Trigger Property="Validation.HasError" Value="False">
            <Setter Property="ToolTip" Value="Acceptable value"/>
            <Setter Property="Background" Value="White"/>
        </Trigger>
    </Style.Triggers>
</Style>

当出现验证错误时,按钮会显示黄色背景,并且工具提示会显示错误列表中的第一项。黄色背景是我想要实现的,但我想显示验证错误的完整列表,而不仅仅是第一个。我尝试了以下方法,只显示了一个空列表(为简洁起见,只是上面的触发器,名称匹配)。

<Trigger Property="Validation.HasError" Value="True">
    <Setter Property="ToolTip">
        <Setter.Value>
            <ListBox ItemsSource="{Binding (Validation.Errors).[0].ErrorContent.Value, RelativeSource={x:Static RelativeSource.Self}}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Label Content="{Binding ErrMsg}" />
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Setter.Value>
    </Setter>
</Trigger>

我几乎肯定需要两个 ListBox 元素来显示我的对象中的每个列表,但到目前为止,我什至无法使用一个。我设置错了什么?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    您可以绑定到 Tooltip 的 PlacementTarget 的 Validation.Errors 附加属性:

    <Setter Property="ToolTip">
        <Setter.Value>
            <ToolTip>
                <ItemsControl ItemsSource="{Binding Path=PlacementTarget.(Validation.Errors), RelativeSource={RelativeSource AncestorType=ToolTip}}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding ErrorContent}" />
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </ToolTip>
        </Setter.Value>
    </Setter>
    

    【讨论】:

    • 在我的情况下 效果更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多