Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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
C# 为什么这个代码不起作用?跑步后什么也没发生?我希望在我的视图中有验证错误_C#_Wpf - Fatal编程技术网

C# 为什么这个代码不起作用?跑步后什么也没发生?我希望在我的视图中有验证错误

C# 为什么这个代码不起作用?跑步后什么也没发生?我希望在我的视图中有验证错误,c#,wpf,C#,Wpf,我认为这样的代码 <TextBox Text="{Binding MiejsceWykonaniaNadgodzin, UpdateSourceTrigger=PropertyChanged}" Name="MiejsceWykonaniaNadgodzinText" Margin="50 50 50 50"> <Validation.ErrorTemplate> <ControlTemplate>

我认为这样的代码

<TextBox 
        Text="{Binding MiejsceWykonaniaNadgodzin,  UpdateSourceTrigger=PropertyChanged}" 
        Name="MiejsceWykonaniaNadgodzinText" Margin="50 50 50 50">
    <Validation.ErrorTemplate>
        <ControlTemplate>
            <StackPanel>
                <!-- Placeholder for the TextBox itself -->
                <AdornedElementPlaceholder x:Name="textBox"/>
                <TextBlock Text="{Binding [0].ErrorContent}" Foreground="Red"/>
            </StackPanel>
        </ControlTemplate>
    </Validation.ErrorTemplate>
</TextBox>
我在视图中的文本框中写入了数字,例如
2222
,但没有显示错误

<TextBox Name="MiejsceWykonaniaNadgodzinText" Margin="50 50 50 50">
    <TextBox.Text>
       <Binding Path="MiejsceWykonaniaNadgodzin"  UpdateSourceTrigger="PropertyChanged" >
             <Binding.ValidationRules>
                  <local:MiejsceWykonaniaNadgodzinTextRule />
             </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
    <Validation.ErrorTemplate>
        <ControlTemplate>
            <StackPanel>
                <!-- Placeholder for the TextBox itself -->
                <AdornedElementPlaceholder x:Name="textBox"/>
                <TextBlock Text="{Binding [0].ErrorContent}" Foreground="Red"/>
            </StackPanel>
        </ControlTemplate>
    </Validation.ErrorTemplate>
</TextBox>
别忘了修改

public string MiejsceWykonaniaNadgodzin
{
    get => miejsceWykonaniaNadgodzin;
    set
    {
        this.miejsceWykonaniaNadgodzin = value;//"aaa";

        OnPropertyChanged(nameof(MiejsceWykonaniaNadgodzin));
    }
}

尝试
OnPropertyChanged(nameof(MiejsceWykonaniaNadgodzin))为什么会出现错误?MieJScewykonaniadGodzin是一个字符串,2222是一个有效字符串。您还在setter中将backing变量设置为固定字符串,而不是值,因此miejsceWykonaniaNadgodzin将始终设置为“aaa”。您是对的,Andy,观点正确。您能告诉我如何将OnPropertyChanged()与双变量一起使用吗?在看到验证错误后,我会看到它。非常感谢您的帮助。非常感谢,但我遇到了一个错误。无法分配值,应为ValidationRule。我补充说我的MyCustomConverter实现验证规则
你能给我看看你的MyCustomConverter实现吗
public class MiejsceWykonaniaNadgodzinTextRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        //example test
        if(value.ToString() == "aaa")
            return new ValidationResult(false, $"Error: value = aaa");
        return ValidationResult.ValidResult;
    }
}
public string MiejsceWykonaniaNadgodzin
{
    get => miejsceWykonaniaNadgodzin;
    set
    {
        this.miejsceWykonaniaNadgodzin = value;//"aaa";

        OnPropertyChanged(nameof(MiejsceWykonaniaNadgodzin));
    }
}