代码之家  ›  专栏  ›  技术社区  ›  Domenic

uri的WPF数据绑定/验证?

  •  0
  • Domenic  · 技术社区  · 16 年前

    我当前的设置绑定 Text 我的财产 TextBox 对某个人 Uri 反对。我很想使用WPF的内置验证来检测无效的uri,并从中继续。但这好像没用?

    我可以想象,如果我输入一个异常,例如“aaaa”作为URI,它会抛出一个异常。因此,触发我当前的设置,它应该检测如下异常:

    <TextBox Grid.Column="1" Name="txtHouseListFile" DockPanel.Dock="Right" Margin="3">
        <TextBox.Text>
            <Binding Source="{StaticResource Settings}" Path="Default.HouseListFile" Mode="TwoWay">
                <Binding.ValidationRules>
                    <ExceptionValidationRule />
                </Binding.ValidationRules>
            </Binding>  
        </TextBox.Text>
    </TextBox>
    

    Validation.GetHasError(this.txtHouseListFile)
    

    但是,这似乎不起作用。也许它在尝试转换时不会抛出异常?或者我的设置是错的?对其中任何一个的修正都是很好的。

    2 回复  |  直到 16 年前
        1
  •  1
  •   decasteljau    16 年前

    您可以尝试创建我们自己的ValidationRule(从ValidationRule继承)。在这个类中,重写Validate(…)并尝试创建一个URI对象并捕获异常。在catch中,只需将e.Message设置为exception Message。

    (我不太确定您的绑定源是什么。它是URI对象还是字符串?)

        2
  •  0
  •   decasteljau    16 年前

    文本 属性是字符串)。你需要一个转换器来帮助他。

    试试这个: 创建一个converter类(继承自IValueConverter),该类:

    • 将Uri转换为字符串(使用多个getter之一)

    把你的转换器放在装订中。然后,Converter将在Uri构造函数中抛出异常,ExceptionValidationRule将捕获它。

    Look here