【问题标题】:Three way binding (two of TwoWay binding). Is it possible?三向绑定(两种双向绑定)。可能吗?
【发布时间】:2013-02-06 18:35:04
【问题描述】:

我是数据绑定的新手,所以这个问题可能看起来相当愚蠢。 我使用从http://wpftoolkit.codeplex.com/ 获得的 Xceed WPF Toolkit 的 DataGridControl,我认为它在使用上与 DataGrid 控件非常相似。我打算将 DataGridControl SelectedItem 绑定到 Grid 内容。相关的控件和对象变量有:

GridKaryawan --> DataGridControl
Grid --> without name, for displaying details
karyawans --> ObservableCollection<BiodataKaryawan> --> collection of business objects
selKaryawan --> (intended to be) the selected business object
* The business object "BiodataKaryawan" has already implemented INFC.

到目前为止,我一直在做(仅显示相关部分):

<xcdg:DataGridControl x:Name="GridKaryawan" ItemsSource="{Binding Path=karyawans}" ReadOnly="True" 
                      SelectedItem="{Binding Path=selKaryawan, Mode=TwoWay}">
    ....
    ....
</xcdg:DataGridControl>

在代码后面:

    public ObservableCollection<BiodataKaryawan> karyawans { get; set; }
    public BiodataKaryawan selKaryawan { get; set; }

在网格上:

<Grid DataContext="{Binding Path=selKaryawan, Mode=TwoWay}">
    <Grid.ColumnDefinitions>
       <ColumnDefinition Width="Auto" />
       <ColumnDefinition />
       ....
       ....
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
       ....
       ....
    </Grid.RowDefinitions>

    <Label Grid.Row="0">Nama:</Label>
    <Label Grid.Row="1">Panggilan:</Label>
    ....
    ....

    <TextBox Grid.Column="1" Grid.Row="1" x:Name="txtNama" Text="{Binding Nama}"/>
    <TextBox Grid.Column="1" Grid.Row="2" x:Name="txtPanggilan" Text="{Binding Panggilan}" />
    ....
    ....
</Grid>

我已成功将 DataGridControl.SelectedItem 绑定到网格。但我想在后面的代码中使用“selKaryawan”对象绑定它们,因为表单还将支持创建新的“BiodataKaryawan”,我打算使用“新建”按钮将新的 BiodataKaryawan 对象分配给 selKaryawan。 但是绑定失败了。当我在数据网格中选择一行时,当我将其绑定到“GridKaryawan.SelectedItem”时,详细信息并未显示。我哪里做错了?还是有可能?

提前感谢您的回答。

【问题讨论】:

    标签: wpf binding master-detail


    【解决方案1】:

    我认为您需要在代码隐藏中实现 INotifyPropertyChanged 并在 selKaryawan 属性的设置器中引发 PropertyChanged 事件

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2012-02-11
      • 2015-04-26
      • 2016-04-19
      • 2012-05-25
      • 1970-01-01
      相关资源
      最近更新 更多