在WPF中将自定义依赖项属性用作DataTrigger
我有一个自定义的依赖属性,我想用它作为数据触发器。下面是隐藏的代码:在WPF中将自定义依赖项属性用作DataTrigger,wpf,properties,dependencies,datatrigger,Wpf,Properties,Dependencies,Datatrigger,我有一个自定义的依赖属性,我想用它作为数据触发器。下面是隐藏的代码: public static readonly DependencyProperty BioinsulatorScannedProperty = DependencyProperty.Register( "BioinsulatorScanned", typeof(bool), typeof(DisposablesDisplay), new Framew
public static readonly DependencyProperty BioinsulatorScannedProperty =
DependencyProperty.Register(
"BioinsulatorScanned",
typeof(bool),
typeof(DisposablesDisplay),
new FrameworkPropertyMetadata(false));
public bool BioinsulatorScanned
{
get
{
return (bool)GetValue(BioinsulatorScannedProperty);
}
set
{
SetValue(BioinsulatorScannedProperty, value);
}
}
我已经创建了一个样式和控件模板。我的目标是在依赖项属性设置为true时更改某些文本的颜色
<Style x:Key="TreatEye" TargetType="Label">
<Setter Property="Foreground" Value="#d1d1d1" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="FontSize" Value="30" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Canvas>
<TextBlock x:Name="bioinsulatorText"
Canvas.Left="21" Canvas.Top="33"
Text="Bioinsulator" />
<TextBlock Canvas.Left="21" Canvas.Top="70"
Text="KXL Kit" />
</Canvas>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding BioinsulatorScanned}"
Value="True">
<Setter TargetName="bioinsulatorText"
Property="Foreground" Value="Black" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
尽管通过编程成功地将dependency prop设置为true,但此触发器条件从未触发。这是一个真正的痛苦调试
提前谢谢 看起来您的依赖项属性是在您创建的
DisposableDisplay
对象中定义的。为了使指定的绑定工作,必须将该DisposableDisplay
对象的实例设置为控件(本例中为标签)或其任何祖先的DataContext
。在本例中,我使用基于依赖属性FirstLevelProperty的datatrigger切换按钮的可见性
public static readonly DependencyProperty FirstLevelProperty = DependencyProperty.Register("FirstLevel", typeof(string), typeof(MyWindowClass));
public string FirstLevel
{
get
{
return this.GetValue(FirstLevelProperty).ToString();
}
set
{
this.SetValue(FirstLevelProperty, value);
}
}
通过使用RelativeSource
绑定,可以引用窗口中包含的依赖属性FirstLevel(property)
。您还应该在样式中设置默认设置,该设置将被datatrigger覆盖
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=FirstLevel,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}}"
Value="SomeValue">
<Setter Property="Visibility"
Value="Hidden" />
</DataTrigger>
</Style.Triggers>
<Setter Property="Visibility" Value="Visible" />
</Style>
</Button.Style>
您在哪个对象上定义了依赖项属性?我不确定是否完全理解,但我正在尝试使用ControlTemplate.Triggers部分中的依赖项属性。如果这是真的,我需要“BioIsulatorText”中的文本变黑。这非常有效。作为WPF新手,我发现数据绑定是最麻烦的话题之一。在哪些情况下不需要设置DataContext?DataContext
在使用数据模板时默认设置。默认情况下,数据模板用于项控件(列表框、列表视图、数据网格等)。此外,您可以在任何元素上显式设置datacontext,以更好地促进绑定。这是WPF中最重要的概念之一。