>

텍스트 상자가 있습니다 :

<TextBox Grid.Row="3"
         Grid.Column="1"
         Width="200"
         TextWrapping="Wrap"
         VerticalAlignment="Top"
         Margin="5,10,-10,2"
         Style="{StaticResource TextBoxValueStyle}"
         Validation.ErrorTemplate="{StaticResource ValidationControlTemplate}">                        
                    <TextBox.Text>
                        <MultiBinding StringFormat=" {0} {1}">
                            <Binding Path="Id" ValidatesOnNotifyDataErrors="True" NotifyOnValidationError="True"/>
                            <Binding Path="Name"  />
                        </MultiBinding>
                    </TextBox.Text>
</TextBox>

그리고 여기 내 컨트롤 템플릿이 있습니다 :

<ControlTemplate x:Key="ValidationControlTemplate">
    <DockPanel Visibility="{Binding ElementName=Placeholder, Path=Visibility}">
        <Image x:Name="Image"
               DockPanel.Dock="Right"
               VerticalAlignment="Center"
               Margin="0,-2"
               Style="{StaticResource InformationImageStyle}">
            <Image.ToolTip>
                <ItemsControl ItemsSource="{Binding}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding ErrorContent}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Image.ToolTip>
        </Image>
        <AdornedElementPlaceholder Name="Placeholder" VerticalAlignment="Center"/>
    </DockPanel>
    <ControlTemplate.Triggers>
        <Trigger Property="TextBox.Text" Value="">
            <Setter Property="DockPanel.Dock" TargetName="Image" Value="Left"/>
            <Setter Property="Margin" TargetName="Image" Value="-20,-2"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

내 문제는 텍스트 상자에 값이 있고 오류가있을 때 원래 값을 취하지 않는 것입니다 (DockPanel.Dock = Right 및 Margin = 0, -2)

항상 빈 텍스트로 시작합니다. 오류가 발생하면 이미지가 항상 왼쪽에 표시됩니다.

내가 무엇을 놓치고 있습니까?


  • 답변 # 1

    Grid 를 넣어   <AdornedElementPlaceholder /> 주변  요소와 Trigger 를 교체   DataTrigger 와 함께  장식 된 TextBox 에 바인딩  요소 :

    <ControlTemplate x:Key="ValidationControlTemplate">
        <DockPanel Visibility="{Binding ElementName=Placeholder, Path=Visibility}">
            <Image x:Name="Image"
                           DockPanel.Dock="Right"
                           VerticalAlignment="Center"
                           Margin="0,-2"
                           Style="{StaticResource InformationImageStyle}">
                <Image.ToolTip>
                    <ItemsControl ItemsSource="{Binding}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding ErrorContent}"/>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </Image.ToolTip>
            </Image>
            <Grid>
                <AdornedElementPlaceholder Name="Placeholder" VerticalAlignment="Center"/>
            </Grid>
        </DockPanel>
        <ControlTemplate.Triggers>
            <DataTrigger Binding="{Binding AdornedElement.Text.Length, ElementName=Placeholder}" Value="0">
                <Setter Property="DockPanel.Dock" TargetName="Image" Value="Left"/>
                <Setter Property="Margin" TargetName="Image" Value="-20,-2"/>
            </DataTrigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
    
    

  • 이전 angular - indexhtml을 제공 한 후 서버가/login으로 라우팅되지 않았습니다
  • 다음 math - 루프를 사용하지 않고 어셈블리 언어로 숫자를 추가하는 방법은 무엇입니까?