gpt4 book ai didi

wpf - 带有多重触发器的 SourceName

转载 作者:行者123 更新时间:2023-12-04 07:06:50 24 4
gpt4 key购买 nike

是否可以使用 MultiTrigger评估多个元素的属性?不在模板中,而是在用户控件/窗口中。

例子:

<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

最佳答案

您确实可以使用源名称,但您的 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>

问题似乎是您没有定义 CheckBoxes 您的数据模板,这是他们需要的地方。

关于wpf - 带有多重触发器的 SourceName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1008277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com