我正在尝试启用/禁用正在选中的复选框。我们的应用程序使用 MVVM,正在使用 c# WPF 开发,并且没有代码隐藏。只是 MVVM 和绑定。我正在尝试使用 PropertyChanged,但没有运气。所有其他字段都可以正常工作,除了这个。
这是我的 XAML:
<ct:DataGridExtended Name="dtgProfiles" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" IsReadOnly="True" FrozenColumnCount="2" Margin="-1,23,-1,-1" SelectionMode="Single" ScrollViewer.IsDeferredScrollingEnabled="True" AutoGenerateColumns="False" ItemsSource="{Binding RightProfiles, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding RightProfilesSelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedIndex="{Binding ResourcesSelectedIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Column="4">
<ct:DataGridExtended.Columns>
<DataGridCheckBoxColumn Binding="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="CheckBox">
<Setter Property="Margin" Value="3,2,1,1"/>
<Setter Property="IsHitTestVisible" Value="{Binding IsEditing, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
</Style>
</DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>
<DataGridTextColumn Header="Nome" Binding="{Binding RightProfile.Name}" />
</ct:DataGridExtended.Columns>
</ct:DataGridExtended>
您可以在那里看到,我已将 IsHitTestVisible 设置为我的 IsEditing 属性。此属性通知用户是处于编辑模式还是查看模式。我的问题是,这是唯一一个比 Binding IsEditing 不起作用的字段。
更准确地说(也许有另一种方法):在 ViewMode 中,我不能让用户更新我的网格中的任何内容,包括 TextBlocks 和 Checkbox。我可以使用 IsHitTestVisible={"Binding IsEditing}" 阻止我的整个网格,但是这样,我也阻止了我的 ScrollBar。并且允许用户滚动这个网格。
我怎么能做到这一点?它已经在燃烧我的头了。
谢谢