首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF IDataErrorInfo集成

WPF IDataErrorInfo集成
EN

Stack Overflow用户
提问于 2015-12-31 17:32:53
回答 1查看 306关注 0票数 0

当数据被验证时,它显示为false,因此textbox属性将被更改,并显示错误。

当数据有效时,是否可以进行相反的操作?文本框将变为绿色,并且(复选标记)将出现在文本框旁边。

Xaml

代码语言:javascript
复制
<Window.Resources>
        <ControlTemplate x:Key="eTemplate">
            <DockPanel LastChildFill="True">
                <TextBlock DockPanel.Dock="Right" Foreground="Blue" FontSize="13" Text="{Binding ElementName=adorned,Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" >
                </TextBlock>
                <Border BorderBrush="Red" BorderThickness="2">
                    <AdornedElementPlaceholder x:Name="adorned"/>
                </Border>
            </DockPanel>
        </ControlTemplate>
    </Window.Resources>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-31 17:42:41

还没有尝试过这种方法,但我认为最好的方法是继续使用常规的文本框模板,以显示绿色边框和复选框。

默认情况下,将边框和复选框不可见。

当没有焦点并且用户已经在文本框中输入了一些内容时,使用触发器来显示内容。

像这样吗?:

代码语言:javascript
复制
<ControlTemplate.Triggers>
   <MultiTrigger>
      <MultiTrigger.Conditions>
         <Condition Property="IsFocused" Value="False" />
         <Condition Property="Text"  Value="" />
      </MultiTrigger.Conditions>
      <Setter Property="Visibility" TargetName="border" Value="Visible" />
      <Setter Property="Visibility" TargetName="checkmark" Value="Visible" />
   </MultiTrigger>
</ControlTemplate.Triggers>

参考条款

控件模板可能如下所示:

代码语言:javascript
复制
<TextBox.Template>
   <ControlTemplate>
      <Grid>
         <Grid.ColumnDefinitions>
            <ColumnDefinition Width="107*"/>
            <ColumnDefinition Width="23*"/>
         </Grid.ColumnDefinitions>
         <TextBox Grid.ColumnSpan="1" />
         <Border Name="border" BorderBrush="DarkGreen" BorderThickness="1" Grid.ColumnSpan="1" Visibility="Hidden">
         </Border>
         <Image Name="checkmark" Grid.Column="1" Source="Images/check_48.ico" Grid.ColumnSpan="2" Visibility="Hidden"  />
      </Grid>
      <ControlTemplate.Triggers>
         <MultiTrigger>
            <MultiTrigger.Conditions>
               <Condition Property="IsMouseOver" Value="True" />
            </MultiTrigger.Conditions>
            <Setter Property="Visibility" TargetName="border" Value="Visible" />
            <Setter Property="Visibility" TargetName="checkmark" Value="Visible" />
         </MultiTrigger>
      </ControlTemplate.Triggers>
   </ControlTemplate>
</TextBox.Template>

在我的示例中.我有边框,只有当鼠标在item...You上时,才会显示它,当它不是empty...and时,它就不会像上面那样聚焦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34549707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档