1

我正在尝试将依赖属性绑定到集合的当前选择,并且由于我似乎无法理解的原因,当集合更改时绑定不会更新。

在下面的示例中,我展示了两个示例。一种是正确更新(在文本块/运行上),另一种仅显示初始元素,并且在数据网格选择更改时不会更改。

<Grid>
    <Grid.Resources>
        <CollectionViewSource Source="{Binding Path=List}" x:Key="myViewModel"/>
        <my:UpdateNotWorking MyObjModel="{Binding Source={StaticResource myViewModel}, Path=CurrentItem}" x:Key="updateNotWorking" />
    </Grid.Resources>

    <DataGrid ItemsSource="{Binding Source={StaticResource myViewModel}}" Name="mylistbox"/>
    <TextBlock TextWrapping="Wrap" FontWeight="Bold" Foreground="#FF50CEFF" FontSize="24" TextAlignment="Center" Height="75">
            <Run Text="{Binding Source={StaticResource myViewModel}, Path=text}" Foreground="#FF00E200" />
    </TextBlock>
    <TextBox Text="{Binding Source={StaticResource updateNotWorking}, Path=MyObjModel.text}" Height="22"/>

</Grid>

在此示例中,我的依赖属性是“UpdateNotWorking”依赖对象上的“MyObjModel”,它是从 xaml 代码实例化的。

我将不胜感激有关为什么我的财产没有正确更新的任何信息。

示例项目

4

1 回答 1

0

将此 XAML 粘贴到您的 MainWindow 中。

  <Grid>
    <Grid.Resources>
      <CollectionViewSource Source="{Binding Path=List}" x:Key="myViewModel" />
      <my:UpdateNotWorking x:Key="updateNotWorking" />
    </Grid.Resources>

    <DataGrid ItemsSource="{Binding Source={StaticResource myViewModel}}" Name="mylistbox"
              SelectedItem="{Binding Source={StaticResource updateNotWorking}, Path=MyObjModel, UpdateSourceTrigger=PropertyChanged}" />
    <TextBlock TextWrapping="Wrap" FontWeight="Bold" Foreground="#FF50CEFF" FontSize="24" TextAlignment="Center"
               Height="75">
      <Run Text="{Binding Source={StaticResource myViewModel}, Path=text}" Foreground="#FF00E200" />
    </TextBlock>
    <TextBox Text="{Binding Source={StaticResource updateNotWorking}, Path=MyObjModel.text, UpdateSourceTrigger=PropertyChanged}"
             Height="22" />

  </Grid>

它现在所做的是根据 DataGrid 的设置updateNotWorking的属性,设置为立即查看更改。我们不再需要通过 List 的 CurrentItem 定义 ' 属性,因为它不会仅通过使用 DataGrid 选择它来改变。您可以保持设置,但这不是必需的,因为我们正在使用.MyObjModelSelectedValueUpdatePropertyTriggerPropertyChangedupdateNotWorkingDataGrid SelectedValue

于 2012-08-08T21:19:11.493 回答