Silverlight datagrid twoway绑定

时间:2011-08-18 10:22:33

标签: c# .net silverlight-4.0

我有datagrid,其中一列是Textbox控件,已将绑定设置为twoway。网格绑定到可观察的集合。 问题:如果我在文本框中输入了一些值,则会填充集合。现在,如果我清除该文本框,则该文本框未反映到该集合中。我的绑定属性可以为空。

感谢N Advance

3 个答案:

答案 0 :(得分:1)

检查Visual Studio中的“输出”窗口是否存在绑定错误。您应该看到一条警告,指出没有从空字符串到整数的隐式转换。

您可以使用ValueConverter执行此任务。

有关其他方法,请参阅此相关问题。请注意,有些可能不适用于WPF的重点。

WPF binding not working properly with properties of int type

答案 1 :(得分:0)

您可以使用

<TextBox IsReadOnly="True" Text="{Binding BUApprovalQty, Mode=TwoWay, TargetNullValue=''}"></TextBox>

答案 2 :(得分:0)

我不确定你的问题究竟在哪里,但我尝试了以下内容并按预期工作:

我有一个简单的Person类:

public class Person : ObservableObject
{
    private string name;
    public string Name
    {
        get { return name; }
        set
        {
            if (name == value)
                return;
            name = value;
            RaisePropertyChanged(() => Name);
        }
    }

    private int? age;
    public int? Age
    {
        get { return age; }
        set
        {
            if (age == value)
                return;
            age = value;
            RaisePropertyChanged(() => Age);
        }
    }
}

我还有一个名为ObservableCollection<Person>的{​​{1}}的简单ViewModel。 Ans,这是我的XAML:

Data

我通过在我的<sdk:DataGrid Name="dataGrid" ItemsSource="{Binding Data}" AutoGenerateColumns="False" SelectedItem="{Binding SelectedPerson, Mode=TwoWay}" Grid.Row="1"> <sdk:DataGrid.Columns> <sdk:DataGridTextColumn Binding="{Binding Name, Mode=TwoWay}"/> <sdk:DataGridTextColumn Binding="{Binding Age, Mode=TwoWay}"/> </sdk:DataGrid.Columns> </sdk:DataGrid> 属性的Setter中设置断点来检查它是如何工作的,它显示的值是Age

希望这会有所帮助;)