Hallo Zusammen,
ich schlage mich jetzt seit einigen Tagen mit der Überprüfung von Benutzereingaben in einem DataGrid (neue Zeile) rum...
Um eine neue Zeile zu prüfen habe ich bei Microsoft folgendes gefunden: msdn.microsoft.com/de-de/libra…ationrules(v=vs.110).aspx
Jedoch werden Fehlerhafte eingaben nicht in der GUI als Fehler angezeigt... Der Benutzer kann aber -wenn ein Fehler besteht- keine neue Zeile anlegen... Also sollte die Überprüfung grundsätzlich funktionieren...
Ich Benutze für die GUI die MahApps.Metro (v1.3.0)
Validation rule...
Spoiler anzeigen
In meinem DataGrid...
Ich habe in der Demo App von MahApps.Metro einen Workaround gefunden:
Spoiler anzeigen
Ich könnte ja mit dem Workaround leben... doch es stört mich, dass es bei einer Textbox einfach so klappt (ohne ErrorTemplate usw.) in dem man nur die ValidationRule hinzufügt...
Long story short... die Zeile im DataGrid soll -wenn die Eingabe Fehlerhaft ist- so aussehen...
ich schlage mich jetzt seit einigen Tagen mit der Überprüfung von Benutzereingaben in einem DataGrid (neue Zeile) rum...
Um eine neue Zeile zu prüfen habe ich bei Microsoft folgendes gefunden: msdn.microsoft.com/de-de/libra…ationrules(v=vs.110).aspx
Jedoch werden Fehlerhafte eingaben nicht in der GUI als Fehler angezeigt... Der Benutzer kann aber -wenn ein Fehler besteht- keine neue Zeile anlegen... Also sollte die Überprüfung grundsätzlich funktionieren...
Ich Benutze für die GUI die MahApps.Metro (v1.3.0)
Validation rule...
C#-Quellcode
- public class ValidateWakeOnLanTemplateRow : ValidationRule
- {
- public override ValidationResult Validate(object value, CultureInfo cultureInfo)
- {
- WakeOnLanTemplate template = (value as BindingGroup).Items[0] as WakeOnLanTemplate;
- if (string.IsNullOrEmpty(template.MAC))
- return new ValidationResult(false, Application.Current.Resources["LocalizedString_ValidateError_MACAddressEmpty"] as string);
- if (!Regex.IsMatch(template.MAC, "^[A-Fa-f0-9]{12}$|^[A-Fa-f0-9]{2}(:|-){1}[A-Fa-f0-9]{2}(:|-){1}[A-Fa-f0-9]{2}(:|-){1}[A-Fa-f0-9]{2}(:|-){1}[A-Fa-f0-9]{2}(:|-){1}[A-Fa-f0-9]{2}$"))
- return new ValidationResult(false, Application.Current.Resources["LocalizedString_ValidateError_EnterValidMACAddress"] as string);
- if (string.IsNullOrEmpty(template.Hostname))
- return new ValidationResult(false, Application.Current.Resources["LocalizedString_ValidateError_HostnameEmpty"] as string);
- return ValidationResult.ValidResult;
- }
- }
In meinem DataGrid...
Ich habe in der Demo App von MahApps.Metro einen Workaround gefunden:
C#-Quellcode
- <DataGrid.RowStyle>
- <Style BasedOn="{StaticResource MetroDataGridRow}"
- TargetType="{x:Type DataGridRow}">
- <Style.Triggers>
- <DataTrigger Binding="{Binding MAC, Mode=OneWay, Converter={StaticResource ConverterWakeOnLanTemplateRow}}"
- Value="True">
- <Setter Property="Background"
- Value="#FF8B8B" />
- <Setter Property="Foreground"
- Value="Red" />
- </DataTrigger>
- <!-- IsMouseOver -->
- <MultiDataTrigger>
- <MultiDataTrigger.Conditions>
- <Condition Binding="{Binding MAC, Mode=OneWay, Converter={StaticResource ConverterWakeOnLanTemplateRow}}"
- Value="True" />
- <Condition Binding="{Binding Path=IsMouseOver, RelativeSource={RelativeSource Self}}"
- Value="true" />
- </MultiDataTrigger.Conditions>
- <Setter Property="Background"
- Value="#FFBDBD" />
- </MultiDataTrigger>
- </Style.Triggers>
- </Style>
- </DataGrid.RowStyle>
Ich könnte ja mit dem Workaround leben... doch es stört mich, dass es bei einer Textbox einfach so klappt (ohne ErrorTemplate usw.) in dem man nur die ValidationRule hinzufügt...
Long story short... die Zeile im DataGrid soll -wenn die Eingabe Fehlerhaft ist- so aussehen...
NETworkManager - A powerful tool for managing networks and troubleshoot network problems!