C# 如何将WPF DataGridTextColum文本的最大长度限制为10个字符
如何将WPFC# 如何将WPF DataGridTextColum文本的最大长度限制为10个字符,c#,wpf,c#-4.0,wpfdatagrid,C#,Wpf,C# 4.0,Wpfdatagrid,如何将WPFDataGridTextColumnText的最大长度限制为10个字符 我不想使用DatagridTemplateColumn,因为它有内存泄漏问题 此外,该字段还绑定到数据实体模型。如果您不想使用DatagridTemplateColumn,则可以在此处更改并设置TextBox.MaxLength: <DataGridTextColumn Binding="{Binding Path=SellingPrice, UpdateSourceTrigger=PropertyChan
DataGridTextColumn
Text的最大长度限制为10个字符
我不想使用DatagridTemplateColumn
,因为它有内存泄漏问题
此外,该字段还绑定到数据实体模型。如果您不想使用
DatagridTemplateColumn
,则可以在此处更改并设置TextBox.MaxLength
:
<DataGridTextColumn Binding="{Binding Path=SellingPrice, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="{x:Type TextBox}">
<Setter Property="MaxLength" Value="10"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
我知道我有点像个掘墓人,但我想出了另一个解决方案,我在其他地方找不到。它涉及到使用值转换器。是的,这有点粗糙,但它的优点是不会用很多行污染xaml,如果您想将其应用于许多列,这可能会很有用 以下转换器执行此任务。只需在
Application.Resources
下添加对App.xaml
的以下引用:
,其中con
是指向App.xaml
中转换器的路径
public class StringLengthLimiter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if(value!=null)
{
return value.ToString();
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int strLimit = 3;
try
{
string strVal = value.ToString();
if(strVal.Length > strLimit)
{
return strVal.Substring(0, strLimit);
}
else
{
return strVal;
}
}
catch
{
return "";
}
}
}
然后在xaml绑定中引用转换器,如下所示:
<DataGridTextColumn Binding="{Binding Path=SellingPrice,
UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource StringLengthLimiter}}">
您的已接受解决方案有什么问题?您在说什么内存泄漏?字段的值未保存在实体数据模型中。从网格到上下文绑定没有发生。。。我还了解到DatagridtemplateColumn存在一些内存泄漏问题。。。!!!如何在3位之后使用文本块而不按额外数字?