2
我正在使用DataGrid顯示和編輯數據。視圖(datagrid)綁定到視圖模型。不,我添加了一個自定義的有效性規則(以下這個教程:http://blogs.u2u.be/diederik/post/2009/09/30/Validation-in-a-WPF-DataGrid.aspx)在工具提示中顯示DataGrid-ValidtionError
namespace Presentation.ViewsRoot.ValidationRules
{
class IsPositiveIntegerRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
if (string.IsNullOrEmpty(value as string))
{
return new ValidationResult(true, null);
}
else
{
int proposedValue;
if (!int.TryParse(value.ToString(), out proposedValue))
{
return new ValidationResult(false, "'" + value.ToString() + "' ist no positive integer (>=0).");
}
if (proposedValue < 0)
{
// Something was wrong.
return new ValidationResult(false, "Value can't be smaller than 0.");
}
}
// Everything OK.
return new ValidationResult(true, null);
}
}
}
我在XAML綁定到這個有效性規則
<DataGridTextColumn Header="Shitfs" IsReadOnly="False">
<DataGridTextColumn.Binding>
<Binding Path="Shifts">
<Binding.ValidationRules>
<validationRules:IsPositiveIntegerRule />
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
輸入錯誤的值時,細胞也出現一個紅色邊框和的rowHeader顯示紅色感嘆號(!)。但是沒有顯示消息的工具提示。我試着在UserControl.Resources
添加自定義風格,但它沒有工作:
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
上如何顯示errorcontent在數據網格工具提示任何想法?我想我失去了一些東西必不可少的,但我不能找到什麼...
工作液:
<Style x:Key="CellEditStyle" TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
結合的評論有關使用{Binding RelativeSource Self}
,並引用它的名字的作品。我也必須將TargetType從TextBlock
更改爲TextBox
。感謝您的有用評論。
在我的情況做了與的RelativeSource = {自我的RelativeSource} –
@FlorianGl工作:改到' ' - > no tooltip :( –
basti
Try –