ItemsControl内の項目の検証結果に応じてボタンの有効状態を設定しようとしています(検証エラーが発生した場合、存在する)。WPF ItemsControlの検証項目に基づく有効/無効ボタン
私はそうのような他の入力フィールドに成功し、これをやった:
<Style x:Key="SaveButtonStyle" TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MinValueTextBox, Path=(Validation.HasError)}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
は、しかし、今私も同じように検証したいコレクションにバインドされたのItemsControlを持っています。 コレクションオブジェクトはIDataErrorInfoを実装します。
ボタンスタイルのDataTriggerでElementNameを指定できないため、私はこれをどうしますか?
すべてのコレクション項目のすべての入力フィールドが有効でない場合は、保存ボタンを無効にします。ここで
はDataTemplateを持つのItemsControlコードです:
<ItemsControl ItemsSource="{Binding FeedTypes}" ItemTemplate="{StaticResource FeedTypeDataTemplate}"/>
<DataTemplate x:Key="FeedTypeDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Label Content="{x:Static p:Resources.FeedTypeNameLabel}"/>
<TextBox Name="FeedTypeNameTxtBox" Text="{Binding UpdateSourceTrigger=PropertyChanged, Path=Name,
ValidatesOnDataErrors=true, NotifyOnValidationError=true}" Grid.Column="1"/>
<Label Content="{x:Static p:Resources.KgPerLitreLabel}" Grid.Column="2"/>
<TextBox x:Name="FeedTypeKgPerLitreTxtBox" Text="{Binding UpdateSourceTrigger=PropertyChanged, Path=KgPerLitre,
ValidatesOnDataErrors=true, NotifyOnValidationError=true}" Grid.Column="3"/>
</Grid>
</DataTemplate>
よろしく!