首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XamlParseException误差模板

XamlParseException误差模板
EN

Stack Overflow用户
提问于 2014-01-03 13:31:38
回答 1查看 495关注 0票数 0

我有一个关于验证错误模板和样式的XamlParseException。

我不知道问题出在哪里。

xaml:

代码语言:javascript
复制
<DataGridTemplateColumn Header="Naam" 
    CellTemplate="{StaticResource ContactNameTemplate}" 
    CellEditingTemplate="{StaticResource EditingContactNameTemplate}"/>

字典:

代码语言:javascript
复制
<DataTemplate x:Key="ContactNameTemplate">
    <TextBox HorizontalAlignment="Center" 
        Validation.ErrorTemplate="{StaticResource validationTemplate}" 
        Style="{StaticResource textBoxInError}">
            <TextBox.Text>
            <Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
                    <Binding.ValidationRules>
                        <c:Text Min="21" Max="130"/>
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>
</DataTemplate>
<DataTemplate x:Key="EditingContactNameTemplate">
    <TextBox HorizontalAlignment="Center" 
      Validation.ErrorTemplate="{StaticResource validationTemplate}" 
      Style="{StaticResource textBoxInError}">
        <TextBox.Text>
            <Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
                <Binding.ValidationRules>
                    <c:Text Min="21" Max="130"/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
</DataTemplate>
<ControlTemplate x:Key="validationTemplate">
    <DockPanel>
        <TextBlock Foreground="Red" FontSize="20">!</TextBlock>
        <AdornedElementPlaceholder/>
    </DockPanel>
</ControlTemplate>
<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="true">
            <Setter Property="ToolTip" 
              Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}"/>
        </Trigger>
    </Style.Triggers>
</Style>

模型:

代码语言:javascript
复制
public class Text : ValidationRule
{
    private int _min;
    private int _max;

    public Text()
    {
    }

    public int Min
    {
        get { return _min; }
        set { _min = value; }
    }

    public int Max
    {
        get { return _max; }
        set { _max = value; }
    }

    public override ValidationResult Validate(object value, 
      System.Globalization.CultureInfo cultureInfo)
    {
        ValidationResult result;
        string text;
        if (((string)value).Length < Min || ((string)value).Length > Max)
        {
            text = value.ToString();
            result = new ValidationResult(true, null);
        }
        else
        {
            text = "";
            result = new ValidationResult(false, 
              "De naam moet tss " + Min + " en " + Max + " liggen.");
        }
        return result;
    }
}

我所犯的错误

'System.Windows.Markup.XamlParseException'类型的第一次例外发生在PresentationFramework.dll中。

附加信息:指定的值System.Windows.Markup.StaticResourceHolder抛出一个异常。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 13:36:35

XAML资源按读取顺序加载;在使用StaticResource时,需要确保该资源在使用之前是可用的。

要解决这个问题,请确保资源validationTemplatetextBoxInError的定义高于ContactNameTemplateEditingContactNameTemplate

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

https://stackoverflow.com/questions/20904814

复制
相关文章

相似问题

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