У меня есть два текстовых поля, поле со списком и кнопка сохранения. Если пользователь выбирает определенное значение поля со списком, становится видимым второе текстовое поле. У меня есть правило проверки, которое проверяет, пусто ли пустое или пустое поле, и если это так, он отключил кнопку сохранения.Применить DataTrigger Setter только в том случае, если элемент виден
<Style x:Key="okButtonEnabler" TargetType="Button">
<Setter Property="IsEnabled" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=FirstTextBox, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource IsButtonEnabledConverter}}" Value="0">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding Text, ElementName=SecondTextBox, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource IsButtonEnabledConverter}}" Value="0">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
<TextBox Grid.Row="1" Grid.Column="1" Margin="2" Validation.ErrorTemplate="{StaticResource validationTemplate}" Name="FirstTextBox"
Style="{StaticResource textBoxInError}">
<TextBox.Text>
<Binding Path="FirstValue">
<Binding.ValidationRules>
<validationRules:EmptyStringValidationRule ErrorMessage="Must enter first value" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<TextBox Grid.Row="2" Grid.Column="1" Visibility="{Binding IsSecondValueSelected, Converter={StaticResource SecondTextBoxVisiblityConverter}}" Margin="2" Validation.ErrorTemplate="{StaticResource validationTemplate}"
Style="{StaticResource textBoxInError}" Name="SecondTextBox">
<TextBox.Text>
<Binding Path="SecondValue">
<Binding.ValidationRules>
<validationRules:EmptyStringValidationRule ErrorMessage="Must enter second value" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Так прямо сейчас, независимо от того, если второго текстового поля видимое или нет, триггер данных будет применяться и кнопка будет отключена, пока второе текстовое поле не является пустым. Я хочу этот сценарий, только если отображается второе текстовое поле.
Правильно! И ты избил меня. Я собирался использовать SecondTextBox.Visibility для второго условия, но либо должен работать: –