【发布时间】:2012-02-13 15:32:01
【问题描述】:
我无法使用 DataGrid.Resources 让双向绑定正常工作。文本框与编辑行一起出现。当我退出该行时,绑定到该行的对象不会使用新值更新(使用实现 INotifyPropertyChanged 的对象上的断点进行测试)。
在DataGrid.Resources外部构建多个数据模板之前,数据绑定工作正常。
<DataGrid AutoGenerateColumns="False" Name="dataGridProviderProperties" Height="215" FontSize="11" HorizontalGridLinesBrush="#FFC1C1C1"
VerticalGridLinesBrush="#FFC1C1C1" Padding="0" Background="#00000000" EnableRowVirtualization="False"
HorizontalScrollBarVisibility="Auto" EnableColumnVirtualization="True" CanUserResizeRows="False" AlternationCount="2"
AlternatingRowBackground="#05000000" CanUserAddRows="False" DataContext="{Binding}" ItemsSource="{Binding Properties}" VerticalAlignment="Center" Width="345"
VerticalContentAlignment="Center">
<DataGrid.Resources>
<DataTemplate x:Key="IsSelectedColumnTemplate">
<TextBlock Text="{Binding Value}"/>
</DataTemplate>
<DataTemplate x:Key="IsSelectedColumnTemplateEditing">
<ContentControl x:Name="ControlHolder" Content="{Binding Value}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type System:String}">
<TextBox Text="{Binding ., Mode=TwoWay}" />
</DataTemplate>
<DataTemplate DataType="{x:Type System:Boolean}">
<CheckBox IsChecked="{Binding}"/>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Key" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label VerticalContentAlignment="Center" Height="27" VerticalAlignment="Center" Content="{Binding Key, Mode=OneWay}" Padding="3"></Label>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Value" x:Name="myIsSelectedColumn" CellTemplate="{StaticResource IsSelectedColumnTemplate}"
CellEditingTemplate="{StaticResource IsSelectedColumnTemplateEditing}" CanUserSort="True" Width="Auto" />
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
标签: c# xaml data-binding