【问题标题】:Identical control binding across multiple controls跨多个控件的相同控件绑定
【发布时间】:2013-02-26 22:08:04
【问题描述】:

我有一个应用程序,我想在所有文本框中应用相同的绑定进行验证。

<TextBox Height="23" HorizontalAlignment="Left" Margin="71,76,0,0" Name="textBox1" VerticalAlignment="Top" Width="229" Style="{StaticResource ResourceKey=errorMsgStyle}">            
**<TextBox.Text>
            <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
                <Binding.ValidationRules>
                    <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>**

    </TextBox>

(**) 中的部分对于所有文本框都是相同的,但我不想对所有文本框重复复制和粘贴。

很遗憾,该应用程序不使用 MVVM。有人可以告诉我如何将此验证绑定定义为模板(或类似模板)并在任何地方使用吗?

【问题讨论】:

    标签: wpf validation controls


    【解决方案1】:

    您可以通过在样式中设置绑定来做到这一点。

         <Style x:Key="ValidatedTextBox" TargetType="TextBox">
            <Setter Property="Text">
                <Setter.Value>
                    <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
                        <Binding.ValidationRules>
                            <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
                        </Binding.ValidationRules>
                    </Binding>
                </Setter.Value>
            </Setter>
        </Style>
    

    当然,所有文本框都将绑定到同一个源...不过这可能是您想要的。

    【讨论】:

    • 感谢您的回复。我已经在使用 TextBox 中的“样式”属性。你能告诉我如何使用另一个吗?
    • 您必须从现有样式继承新样式。查看 BasedOn 属性。
    【解决方案2】:
    <Window.Resources>
        <Binding x:Key="Validation" RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
            <Binding.ValidationRules>
                <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
            </Binding.ValidationRules>
        </Binding>
    </Window.Resources>
    

    例子:

    <TextBox Text="{StaticResource Validation}"/>
    

    【讨论】:

    • 您不能在Resources 中放置Binding
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2019-08-10
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多