【发布时间】:2017-05-02 06:41:12
【问题描述】:
我有一点问题。我得到了一些数据的datagridview。内部数据网格是复选框。对于我的应用程序,我使用 MVVM 模式。现在我想做什么。我有按钮,它必须启用数据网格。在 xaml 中,我有一些基于选中复选框的多触发条件禁用了数据网格。但我想允许用户通过单击按钮启用数据网格。我不知道如何在 MVVM 模式中做到这一点。使用后面的代码将违反 MVVM 模式。
例如,我的 xaml 代码中有这个:
<Style TargetType="DataGridRow">
<Style.Triggers>
<!--Je-li truck ve stavu nakládá, pak povol naložit, pokud naložený již není. Pokud je naložen, řádek je nepřístupný.-->
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding DataContext.EntityNotifiedTruck.ConvertEnumToStr, RelativeSource={RelativeSource AncestorType=local:UCDeliveryDetail}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Value="Nakládá" />
<Condition Binding="{Binding IsLoaded,UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="False" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding DataContext.EntityNotifiedTruck.ConvertEnumToStr, RelativeSource={RelativeSource AncestorType=local:UCDeliveryDetail}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Value="Nakládá" />
<Condition Binding="{Binding IsLoaded,UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="True"/>
还有这个
<Button Content="ODBLOKOVAT VÝKLADKU" Command="{Binding UnLoadTruckCmd}" CommandParameter="{Binding}" HorizontalAlignment="Left" Margin="865,5,0,0" Style="{StaticResource DialogButton}" VerticalAlignment="Top" Width="Auto" Height="22">
</Button>
是我的带有命令的按钮,如果被禁用,我想允许用户再次启用数据网格。有小费吗?非常感谢!
【问题讨论】:
-
不能绑定Datagrid的IsEnabled属性吗?
-
我可以,但如何解决这个问题? :) 可以启用或不启用数据网格时,我需要复杂的条件。
-
您正在使用 MVVM,因此您的 VM 必须具有所有属性值。如果您可以检查VM中的所有条件,那么它可以解决您的问题。