【发布时间】:2021-06-28 14:42:53
【问题描述】:
是否可以在网格级别定义触发器来更新网格的子属性?
我尝试了类似的方法但没有成功:
视图模型:
public class MyViewModel
{
public bool PropertyA {get;set;}
public bool PropertyB {get;set;}
}
(为了简短起见,我省略了所有 PropertyChanged 的东西)
XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<TextBlock x:Name="ControlA" Grid.Row="0" />
<TextBlock x:Name="ControlB" Grid.Row="1" />
<Grid.Triggers>
<!-- Condition A -->
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding PropertyA}" Value="false"/>
<Condition Binding="{Binding PropertyB}" Value="true"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter TargetName="ControlA" Property="Text" Value="Blah"/>
<Setter TargetName="ControlB" Property="Text" Value="Blah"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<!-- Conditon B -->
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding PropertyA}" Value="false"/>
<Condition Binding="{Binding PropertyB}" Value="false"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter TargetName="ControlA" Property="Text" Value="Blah"/>
<Setter TargetName="ControlB" Property="Text" Value="Blah"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<!-- Condition C -->
<DataTrigger Binding="{Binding PropertyA}" Value="true">
<Setter TargetName="ControlA" Property="Text" Value="Blah"/>
<Setter TargetName="ControlB" Property="Text" Value="Blah"/>
</DataTrigger>
</Grid.Triggers>
</Grid>
但是编译器抱怨
无法识别名称“ControlA”。
无法识别名称“ControlB”。
成员“Text”无法识别或无法访问。
成员“Text”无法识别或无法访问。
【问题讨论】:
标签: wpf xaml datatrigger