WPF Enable If Valid
<Window x:Class="HDI_WPF_EnableIfValid_cs.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation%22
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml%22
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded" >
<Window.Resources>
<Style TargetType="{x:Type Button}" x:Key="SingleValidStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=txtAge, Path=(Validation.HasError)}" Value="true">
<Setter Property="IsEnabled" Value="false" />
</DataTrigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type Button}" x:Key="MultiValidStyle">
<Setter Property="IsEnabled" Value="false" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=txtAge, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=txtName, Path=(Validation.HasError)}" Value="false" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="true" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel x:Name="EnabledRoot">
<TextBox x:Name="txtName" Margin="10" Text="{Binding Name}" Width="200" HorizontalAlignment="Center" />
<TextBox x:Name="txtAge" Margin="10" Width="200" HorizontalAlignment="Center">
<TextBox.Text>
<Binding Path="Age">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<Button x:Name="btnSave" Content="Save Data" Style="{StaticResource MultiValidStyle}" HorizontalAlignment="center" Click="btnSave_Click" />
</StackPanel>
</Window>
public partial class Window1 : Window
{
private Person localperson;
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
localperson = new Person() {Name="John Doe", Age=340};
EnabledRoot.DataContext=localperson;
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
txtName.Text="Button Clicked";
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

浙公网安备 33010602011771号