翻訳テキストフィールドを表示するItemsControlがあります。 検証をセットアップしたいので、すべての翻訳が空であればエラーがあり、フィールドには「エラー」とマークされています。 これを行う可能性はありますか?wpfでItemsControlを検証できませんでした
私のXAML:
<ItemsControl x:Name="LanguageItemsControl" ItemsSource="{Binding Path=Translations, Mode=TwoWay}"
LostFocus="OnLostFocus" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="5,2,5,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="47*"/>
<ColumnDefinition Width="53*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" x:Name="ItemLabel" VerticalAlignment="Center"
Text="{Binding Path=Key, StringFormat={x:Static res:Resources.lblCaption}}" />
<TextBox Grid.Column="1" x:Name="ItemText" VerticalAlignment="Center"
HorizontalAlignment="Stretch" Margin="2,0,22,0"
Text="{Binding Path=Value, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=true, NotifyOnValidationError=true}"
LostFocus="OnLostFocus"
AcceptsReturn="True"
MaxLines="2"
ScrollViewer.VerticalScrollBarVisibility="Auto"
MaxLength="150">
</TextBox>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
私のモデルのクラスがIDataErrorInfo
とINotifyPropertyChanged
翻訳から実装は、パブリックプロパティキーと値を持つカスタムタイプ「LanguageValue
」のObservableCollection
です。
私のモデルはstring this[string columnName]
でしたが、単純なテキストボックス(ItemsControl外)で完璧に動作しますが、これはどのように私のアイテムで動作させることができますか?私は何かのような痛みを感じた:
public string this[string columnName]
{
get
{
string result = null;
...
if (columnName == "Translations" || columnName == "ItemText")
{
if (Translations.All(t => string.IsNullOrEmpty(t.Value)))
result = Properties.Resources.errMsgEnterName;
}
...
もちろんこれは動作しませんでした。
提案がありますか?
良い解決策:4.Thatは、テキストボックスをオーバーザホバリングするときにエラーmesseageを表示したい場合は、ツールチップを必要とし、空のテキストボックスの周りに赤いボックスが表示されます!しかし、1つのValueだけが空の場合はエラーを表示する必要はありません。私はそれらのすべてが空の時にエラーが欲しいです。 – Ksice