Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf XamlParseException数据网格_Wpf_Xaml_Mvvm_Datagrid - Fatal编程技术网

Wpf XamlParseException数据网格

Wpf XamlParseException数据网格,wpf,xaml,mvvm,datagrid,Wpf,Xaml,Mvvm,Datagrid,我得到了一个XamlParseException,我不知道如何解决它。我希望能够控制输入 xaml 字典 <DataTemplate x:Key="ContactNameTemplate" > <TextBox HorizontalAlignment="Center" Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textBoxInError

我得到了一个
XamlParseException
,我不知道如何解决它。我希望能够控制输入

xaml


字典

<DataTemplate x:Key="ContactNameTemplate" >
    <TextBox HorizontalAlignment="Center" Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textBoxInError}">
        <TextBox.Text>
            <Binding Path="Name" Source="{Binding 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" Source="{Binding Name}" UpdateSourceTrigger="PropertyChanged">
                <Binding.ValidationRules>
                    <c:Text Min="21" Max="130"/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
</DataTemplate>

编辑

我的错误

PresentationFramework.dll中首次出现类型为“System.Windows.Markup.XamlParseException”的异常

其他信息:无法在Binding类型的源属性中设置绑定。绑定只能在DependencyObject的DependencyProperty中设置

<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>

    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);
        }
        return result;
    }
}

!
公共类文本:ValidationRule
{
私人互联网;;
私人国际最大值;
公共文本()
{
}
公共int Min
{
获取{return\u min;}
设置{u min=value;}
}
公共整数最大值
{
获取{return\u max;}
设置{u max=value;}
}
公共覆盖验证结果验证(对象值,System.Globalization.CultureInfo CultureInfo)
{
验证结果;
字符串文本;
如果((字符串)值).LengthMax)
{
text=value.ToString();
结果=新的ValidationResult(真,空);
}
其他的
{
text=“”;
结果=新的验证结果(错误,“De naam moet tss”+最小值+“en”+最大值);
}
返回结果;
}
}

您已在另一个绑定的
Source
属性中放置了一个绑定-如果
DataContext
尚未包含所需的源,则源应该是应提供该值的目标对象:-
Path
属性指定指向的对象上的绑定路径
DataContext
Source
。凭猜测我想说,您可能只是想从两个绑定中删除
Source
属性。我删除了它,并且在PresentationFramework.dll中出现了“System.Windows.Markup.XamlParseException”类型的第一次异常。其他信息:指定的值System.Windows.Markup.StaticResourceHolder引发了异常。听起来您的资源出现了问题-您是否可以显示validationTemplate资源和textBoxInError资源-或者您的模板的datacontext不正确-您是否在运行时检查了datacontext?
<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>

    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);
        }
        return result;
    }
}