【问题标题】:Refresh Grid with new DataContext WPF使用新的 DataContext WPF 刷新网格
【发布时间】:2011-04-27 14:22:11
【问题描述】:

我有一个带有绑定到数据上下文的域服务的网格。我想刷新那个数据上下文。

我有代码:

            <Grid DataContext="{Binding Data, ElementName=userDomainDataSource}" Name="gridAccountDetails">
                <sdk:Label Content="Address Line" HorizontalAlignment="Left" Margin="443,67,0,0" d:LayoutOverrides="VerticalAlignment" VerticalAlignment="Top" />
                <TextBox HorizontalAlignment="Left" Margin="537,59,0,0" x:Name="txtAccountDetailsAddress" Text="{Binding addressline, Mode=OneWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" d:LayoutOverrides="VerticalAlignment" Height="24" VerticalAlignment="Top" DataContext="{Binding}" />
                <sdk:Label Content="County" HorizontalAlignment="Left" Margin="443,142,0,143" d:LayoutOverrides="Height" />
                <TextBox HorizontalAlignment="Left" Margin="537,134,0,143" x:Name="txtAccountDetailsCounty" Text="{Binding county, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" />
                <sdk:Label Content="Email" HorizontalAlignment="Left" Margin="26,143,0,142" d:LayoutOverrides="HorizontalAlignment, Height" />
                <TextBox HorizontalAlignment="Left" Margin="114,136,0,142" x:Name="txtAccountDetailsEmail" Text="{Binding email, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" d:LayoutOverrides="HorizontalAlignment" />

                <sdk:Label Content="First Name" HorizontalAlignment="Left" Margin="26,67,0,0" VerticalAlignment="Top" />
                <TextBox HorizontalAlignment="Left" Margin="114,60,0,0" x:Name="txtAccountDetailsFirstname" Text="{Binding firstname, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" Width="233" Height="23" VerticalAlignment="Top" d:LayoutOverrides="HorizontalAlignment" />

                <sdk:Label Content="Last Name" HorizontalAlignment="Left" Margin="26,104,0,0" VerticalAlignment="Top" />
                <TextBox HorizontalAlignment="Left" Margin="114,97,0,0" x:Name="txtAccountDetailsLastname" Text="{Binding lastname, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" Height="23" VerticalAlignment="Top" d:LayoutOverrides="HorizontalAlignment" />
                <sdk:Label Content="Postcode" HorizontalAlignment="Left" Margin="443,0,0,104" VerticalAlignment="Bottom" />
                <TextBox HorizontalAlignment="Left" Margin="537,0,0,104" x:Name="txtAccountDetailsPostcode" Text="{Binding postcode, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" Height="24" VerticalAlignment="Bottom" />
                <sdk:Label Content="Town" Margin="0,105,323,0" VerticalAlignment="Top" HorizontalAlignment="Right" />
                <TextBox HorizontalAlignment="Left" Margin="537,0,0,180" x:Name="txtAccountDetailsTown" Text="{Binding town, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" Height="24" VerticalAlignment="Bottom" />
                <Button Content="Edit Account Details" HorizontalAlignment="Right" Margin="0,0,26,35" VerticalAlignment="Bottom" Width="136"/>
            </Grid>

我已经用代码设置了域源:

EntityQuery<Web.User> qry =
                    from u in usrClass.getQuery()
                    where u.userId == usrClass.getUserId()
                    select u;
                LoadOperation<Web.User> loadU = usrClass.loadUsersQuery(qry);
                userDomainDataSource.DataContext = loadU.Entities;

我尝试过使用:

gridAccountDetails.DataContext = userDomainDataSource.DataContext;

gridAccountDetails.DataContext = userDomainDataSource.Data;

没有运气

但我想刷新数据源,以便将新值放入文本框中,因为用户可以更改这些值。

任何人都可以提供任何信息。谢谢

【问题讨论】:

    标签: c# wpf silverlight datasource domainservices


    【解决方案1】:

    你必须告诉“gridAccountDetails”“userDomainDataSource”的“数据”发生了变化。最广泛使用的是引发 PropertyChanged 事件,尽管我不确定这将如何适合您的服务,可能考虑从服务到您的网格的缓冲区。

    还有一件事一旦绑定,我就不会触及您的网格的数据上下文,您正在绑定它然后覆盖。

    【讨论】:

    • 我似乎找不到 propertyChanged 事件,在 Visual Studio 中查看它没有列出。
    • 我会创建一个自定义类(小包装器)并将其用于绑定。实施 INotifyPropertyChanged 它应该可以工作。我刚刚注意到 silverlight 标签 - 我不确定这是否适用于 silverlight,因为我没有这方面的经验。我只写关于 wpf 的文章。
    猜你喜欢
    • 2010-10-28
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2016-07-06
    相关资源
    最近更新 更多