相关疑难解决方法(0)

附加属性在WPF中的工作原理是什么?

关于Attached Properties如何将其值传递给父元素或子元素,我有点神秘.TextElement.FontFamily导致子元素继承分配给该属性的值(看似下游的操作,父级到子级).Grid.Column导致父项在特定位置显示该子项(看似上游操作,子项与父项).Attached Property值如何知道要么向上还是向下流动?我的这个概念是不正确的,还是有一个缺失会让所有这些都被置于透视中?

<StackPanel TextElement.FontFamily="Wingdings">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Button Grid.Column="1" Content="My Button"/>
    </Grid>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

wpf xaml attached-properties

23
推荐指数
1
解决办法
2万
查看次数

即使用户控件折叠/隐藏也会显示错误样式

我有一个用户控件来验证它的内容。

我正在使用 IDataErrorInfo 来验证输入(我必须使用 .Net 3.5)。

我正在关注本教程:http : //japikse.blogspot.ch/2009/07/idataerrorinfo-error-templates-and-wpf.html

这意味着我正在使用以下样式:

<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
        <Setter Property="Background" Value="Pink"/>
        <Setter Property="Foreground" Value="Black"/>
    </Trigger>
</Style.Triggers>
<Setter Property="Validation.ErrorTemplate">
    <Setter.Value>
        <ControlTemplate>
            <DockPanel LastChildFill="True" 
               ToolTip="{Binding ElementName=controlWithError,Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
                <TextBlock DockPanel.Dock="Right" 
                   Foreground="Red"
                   FontSize="14pt" 
                   Margin="-15,0,0,0" FontWeight="Bold">*
                </TextBlock>
                <Border BorderBrush="Red" BorderThickness="1">
                <AdornedElementPlaceholder Name="controlWithError" />
                </Border>
            </DockPanel>
        </ControlTemplate>
    </Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)

问题是,在某些情况下,我必须隐藏表单(当没有选择任何元素时),但是当我显示的表单没有错误时,然后我折叠表单(网格),UserControls 中的文本框(这是无效的,因为它们不接受空值)得到红色边框和星号:

在此处输入图片说明

未隐藏时的相同形式: 在此处输入图片说明 请注意:只有 ErrorTemplate 的内容是可见的,触发器的内容(粉红色背景,黑色前景)不适用。

所以我认为这种风格有问题,但我对 WPF 风格不够熟悉,不知道为什么。

另一个奇怪的事情:如果我有具有相同验证的文本框(而不是用户控件中的文本框),它们会被正确隐藏。

编辑 我发现了一些对我有很大帮助的其他东西,首先,这个主题: 隐藏控件时隐藏验证装饰 有了这个,我做了以下事情:将我的用户控件可见性绑定到隐藏元素可见性,然后在用户控件中,我将文本框可见性绑定到用户控件可见性,然后(最后),我添加一个样式触发器:

<Style TargetType="{x:Type TextBox}">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="Background" Value="Pink"/>
                <Setter Property="Foreground" Value="Black"/>
            </Trigger> …
Run Code Online (Sandbox Code Playgroud)

validation wpf styles idataerrorinfo

5
推荐指数
1
解决办法
1130
查看次数