1

我正在尝试启用/禁用正在选中的复选框。我们的应用程序使用 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。并且允许用户滚动这个网格。

我怎么能做到这一点?它已经在燃烧我的头了。

谢谢

4

0 回答 0