gpt4 book ai didi

wpf - 在 'System.Windows.Data.Binding' 上提供值引发异常

转载 作者:行者123 更新时间:2023-12-04 12:24:59 24 4
gpt4 key购买 nike

我正在向文本框添加验证规则(按照 Adam Nathan 的 WPF 4 Unleashed 上的示例)

启动应用程序时,我遇到以下神秘的错误消息

Provide value on 'System.Windows.Data.Binding' threw an exception



alt text

错误是什么意思,需要做些什么来解决这个问题?

这是完整的源代码

XAML
<Window.Resources>
<Style x:Key="controlStyle" TargetType="{x:Type Control}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RenderTransform">
<Setter.Value>
<RotateTransform Angle="20" />
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Black" />
</Trigger>
</Style.Triggers>
<Setter Property="FontSize" Value="22" />
<Setter Property="Background" Value="Purple" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Height" Value="50" />
<Setter Property="Width" Value="50" />
<Setter Property="RenderTransformOrigin" Value=".5,.5" />
<Setter Property="RenderTransform">
<Setter.Value>
<RotateTransform Angle="10" />
</Setter.Value>
</Setter>
<Setter Property="TextBox.TextAlignment" Value="Right" />
</Style>
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Background" Value="Red" />
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>

<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource textBoxStyle}">
<TextBox.Text>
<Binding>
<Binding.ValidationRules>
<local:JpgValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</StackPanel>

<StackPanel Orientation="Horizontal">
<Button Style="{StaticResource controlStyle}">1</Button>
<ComboBox Style="{StaticResource controlStyle}">
<ComboBox.Items>2</ComboBox.Items>
</ComboBox>
<Expander Style="{StaticResource controlStyle}" Content="3" />
<TabControl Style="{StaticResource controlStyle}">
<TabControl.Items>4</TabControl.Items>
</TabControl>
<ToolBar Style="{StaticResource controlStyle}">
<ToolBar.Items>5</ToolBar.Items>
</ToolBar>
<!--<InkCanvas Style="{StaticResource controlStyle}" />-->
<TextBox Style="{StaticResource controlStyle}" Text="7" />
</StackPanel>
</StackPanel>

JpgValidationRule
using System.Globalization;
using System.IO;
using System.Windows.Controls;

namespace StylesDemo
{
public class JpgValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
string fileName = value.ToString();

// Reject nonexistent files:
if (!File.Exists(fileName))
return new ValidationResult(false, "Value is not a valid file!");

// Reject files that don't end in .jpg:
if (Path.GetExtension(fileName).ToUpper() != ".JPG")
return new ValidationResult(false, "Value is not a .jpg file!");

return new ValidationResult(true, null);
}
}
}

最佳答案

我认为它与 TextBox.Text 的默认绑定(bind)模式有关,即 TwoWay,并且需要该路径。您可以尝试设置Mode="OneWay"作为应该在这里工作的 Binding 标记中的属性,但我不完全确定您的总体要求。

关于wpf - 在 'System.Windows.Data.Binding' 上提供值引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3899138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com