WPF TextBox中的MaxLength(来自DataSet中的Column属性)

|| 我试图根据(类型化的)数据库表中的最大字段长度来限制WPF应用程序中文本条目的长度。该应用程序使用数据集并使用ODP.NET连接到Oracle数据库。 为了更好的可维护性,并使我们免于繁琐的工作,我们希望将所有TextBox控件的MaxLength绑定到DataSet中指定的当前表的相应列中的MaxLength。 在我们的案例中,最有效的方法是什么?     
已邀请:
我有完全相同的要求,这是我想到的: 将MaxLength作为属性存储在您的VM中,然后通过列的EditingElementStyle设置单元格的MaxLength属性(假设它的类型为DataGridTextBoxColumn): 在您的VM中:
    private static readonly DependencyProperty MaxLengthProperty = TextBox.MaxLengthProperty.AddOwner(typeof(MyCellVM));
    internal int MaxLength
    {
        get { return (int)(GetValue(MaxLengthProperty)); }
        set { SetValue(MaxLengthProperty, value); }
    }
然后在您列的构造函数中:
EditingElementStyle = new Style(typeof(TextBox));
EditingElementStyle.Setters.Add(new Setter(TextBox.MaxLengthProperty, new Binding(source + \"MaxLength\") { Mode = BindingMode.OneWay }));
注意:我必须在列的构造函数中设置源变量,如下所示:
string source = String.Format(CultureInfo.InvariantCulture, \"[{0}].\", dataGrid.Columns.Count);
这样做是因为我在运行时填充dataGrid的字段,并且我事先不知道会有多少,但是如果您有固定的结构,这对您来说更容易为了适应,您甚至应该可以将此代码放在xaml部分中。     

要回复问题请先登录注册