是否可以使用MultiTrigger
来评估多个元素的属性?它不在模板中,但在Usercontrol / Window中。
示例:
<CheckBox x:Name="checkBox1" />
<CheckBox x:Name="checkBox2" />
<CustomControl>
<CustomControl.ContentTemplate>
<DataTemplate>
<DataTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition
SourceName="checkBox1"
Property="IsChecked"
Value="False" />
<Condition
SourceName="checkBox2"
Property="IsChecked"
Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter
Property="Visibility"
Value="Collapsed" />
</MultiTrigger.Setters>
</MultiTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</CustomControl.ContentTemplate>
在正常的Trigger
中,我们可以使用sourceName来触发这些复选框控件中的任何一个上的属性,但是当MultiTrigger
尝试查找这些控件时,我会遇到构建错误。
注意:提到我使用DataTemplate
而不是Style
的原因here
答案 0 :(得分:2)
您确实可以使用源名称,但您的DataTemplate似乎未正确定义。我已经尝试填写你的例子似乎有效:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Grid>
<Grid.Resources>
<DataTemplate DataType="{x:Type sys:String}">
<StackPanel>
<TextBlock x:Name="textBlock" Text="{Binding}"></TextBlock>
<CheckBox x:Name="checkBox1" />
<CheckBox x:Name="checkBox2" />
</StackPanel>
<DataTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition
SourceName="checkBox1"
Property="IsChecked"
Value="False" />
<Condition
SourceName="checkBox2"
Property="IsChecked"
Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter
TargetName="textBlock"
Property="Visibility"
Value="Collapsed" />
</MultiTrigger.Setters>
</MultiTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Grid.Resources>
<ContentControl>
<sys:String>Foo</sys:String>
</ContentControl>
</Grid>
</Page>
问题似乎是您没有在DataTemplate中定义CheckBox ,这是他们需要的地方。