如何在tooltip样式中使用depenceny 属性设置文字?
How to use depenceny property in the style of tooltip to set the text?
在一个按钮中,我正在使用一个依赖项属性将视图模型中的信息传递给按钮的样式,因此我可以根据某些条件设置颜色的颜色。
按钮的代码是这样的:
我的 xaml 文件中的样式:
<Style x:Key="BotonesColorEstadosTemplate" TargetType="{x:Type Button}">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="dp:BotonesEstadosAttachedProperty.CodigoEstado" Value="0"/>
<Condition Property="dp:BotonesEstadosAttachedProperty.AccionHabilitada" Value="true"/>
</MultiTrigger.Conditions>
</MultiTrigger>
<ContentTemplate>
</ContentTemplate>
</Style>
依赖属性:
public static class BotonesEstadosAttachedProperty
{
public static readonly DependencyProperty CodigoEstadoProperty =
DependencyProperty.RegisterAttached(
"CodigoEstado",
typeof(short),
typeof(BotonesEstadosAttachedProperty));
public static short GetCodigoEstado(DependencyObject obj)
{
return (short)obj.GetValue(CodigoEstadoProperty);
}
public static void SetCodigoEstado(DependencyObject obj, short value)
{
obj.SetValue(CodigoEstadoProperty, value);
}
public static readonly DependencyProperty AccionHabilitadaProperty =
DependencyProperty.RegisterAttached(
"AccionHabilitada",
typeof(bool),
typeof(BotonesEstadosAttachedProperty));
public static bool GetAccionhabilitada(DependencyObject obj)
{
return (bool)obj.GetValue(AccionHabilitadaProperty);
}
public static void SetAccionHabilitada(DependencyObject obj, bool value)
{
obj.SetValue(AccionHabilitadaProperty, value);
}
}
如何在按钮中使用:
<Button Name="btnAlmacenesActualizar" Content="..." Height="23" Margin="3,0,0,0" Width="23"
ap:BotonesEstadosDependencyProperty.CodigoEstado="{Binding CodigoEstadoActualizarAlmacenes}"
ap:BotonesEstadosDependencyProperty.AccionHabilitada="{Binding EsAccionActualizarAlmacenesHabilitada}">
有了这个,我可以使用我的视图模型的 属性 并传递给我的样式,它使用触发器中的信息来设置按钮的颜色。
现在,我想要一个工具提示的样式,所有工具提示的默认配置,我想一开始可以传递工具提示的文本,但后来我想通过另一个变量。顺便说一句,为了测试,我想用文字试试。
我有这个风格:
<Style TargetType="ToolTip" x:Key="ToolTipDefaultStyle">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="dp:ToolTipAttachedProperty.Texto"/>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
带有工具提示的我的 StackPanel:
<StackPanel Name="spTiposIva" Orientation="Vertical" Margin="5,0,0,0"
ap:ToolTipDependencyProperty.Texto="{Binding TiposIvaTooltip}">
<StackPanel.ToolTip>
<ToolTip Style="{StaticResource ToolTipDefaultStyle}"/>
</StackPanel.ToolTip>
</StackPanel>
但在这种情况下,显示的文本是“dp:ToolTipAttachedProperty.Texto”。所以我想如果可以做与按钮相同的事情,使用依赖属性将信息从视图模型传递到样式。
谢谢。
您目前没有绑定附加的 属性,您正在将 字符串 分配为 Value
。要绑定到 附加属性 ,您需要使用绑定标记扩展 and parentheses,例如:
<Setter Property="Text" Value="{Binding (dp:ToolTipAttachedProperty.Texto)"/>
但是,在您的情况下,您需要引用 ToolTip
的父控件,您的 属性 附加到该控件。通常,您会使用 RelativeSource
绑定和 AncestorType
来执行此操作,但这在这里不起作用,因为 ToolTip
与父控件不在同一可视化树中。
相反,您可以通过父级 ToolTip
上的 PlacementTarget
属性 访问控件。
<Setter Property="Text" Value="{Binding PlacementTarget.(dp:ToolTipAttachedProperty.Texto), RelativeSource={RelativeSource AncestorType={x:Type ToolTip}}}"/>
另请检查您的 XAML 是否有拼写错误。附加属性类型在 StackPanel
和 ToolTip
样式中不匹配:ToolTipDependencyProperty
或 ToolTipAttachedProperty
?
在一个按钮中,我正在使用一个依赖项属性将视图模型中的信息传递给按钮的样式,因此我可以根据某些条件设置颜色的颜色。
按钮的代码是这样的:
我的 xaml 文件中的样式:
<Style x:Key="BotonesColorEstadosTemplate" TargetType="{x:Type Button}">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="dp:BotonesEstadosAttachedProperty.CodigoEstado" Value="0"/>
<Condition Property="dp:BotonesEstadosAttachedProperty.AccionHabilitada" Value="true"/>
</MultiTrigger.Conditions>
</MultiTrigger>
<ContentTemplate>
</ContentTemplate>
</Style>
依赖属性:
public static class BotonesEstadosAttachedProperty
{
public static readonly DependencyProperty CodigoEstadoProperty =
DependencyProperty.RegisterAttached(
"CodigoEstado",
typeof(short),
typeof(BotonesEstadosAttachedProperty));
public static short GetCodigoEstado(DependencyObject obj)
{
return (short)obj.GetValue(CodigoEstadoProperty);
}
public static void SetCodigoEstado(DependencyObject obj, short value)
{
obj.SetValue(CodigoEstadoProperty, value);
}
public static readonly DependencyProperty AccionHabilitadaProperty =
DependencyProperty.RegisterAttached(
"AccionHabilitada",
typeof(bool),
typeof(BotonesEstadosAttachedProperty));
public static bool GetAccionhabilitada(DependencyObject obj)
{
return (bool)obj.GetValue(AccionHabilitadaProperty);
}
public static void SetAccionHabilitada(DependencyObject obj, bool value)
{
obj.SetValue(AccionHabilitadaProperty, value);
}
}
如何在按钮中使用:
<Button Name="btnAlmacenesActualizar" Content="..." Height="23" Margin="3,0,0,0" Width="23"
ap:BotonesEstadosDependencyProperty.CodigoEstado="{Binding CodigoEstadoActualizarAlmacenes}"
ap:BotonesEstadosDependencyProperty.AccionHabilitada="{Binding EsAccionActualizarAlmacenesHabilitada}">
有了这个,我可以使用我的视图模型的 属性 并传递给我的样式,它使用触发器中的信息来设置按钮的颜色。
现在,我想要一个工具提示的样式,所有工具提示的默认配置,我想一开始可以传递工具提示的文本,但后来我想通过另一个变量。顺便说一句,为了测试,我想用文字试试。
我有这个风格:
<Style TargetType="ToolTip" x:Key="ToolTipDefaultStyle">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="dp:ToolTipAttachedProperty.Texto"/>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
带有工具提示的我的 StackPanel:
<StackPanel Name="spTiposIva" Orientation="Vertical" Margin="5,0,0,0"
ap:ToolTipDependencyProperty.Texto="{Binding TiposIvaTooltip}">
<StackPanel.ToolTip>
<ToolTip Style="{StaticResource ToolTipDefaultStyle}"/>
</StackPanel.ToolTip>
</StackPanel>
但在这种情况下,显示的文本是“dp:ToolTipAttachedProperty.Texto”。所以我想如果可以做与按钮相同的事情,使用依赖属性将信息从视图模型传递到样式。
谢谢。
您目前没有绑定附加的 属性,您正在将 字符串 分配为 Value
。要绑定到 附加属性 ,您需要使用绑定标记扩展 and parentheses,例如:
<Setter Property="Text" Value="{Binding (dp:ToolTipAttachedProperty.Texto)"/>
但是,在您的情况下,您需要引用 ToolTip
的父控件,您的 属性 附加到该控件。通常,您会使用 RelativeSource
绑定和 AncestorType
来执行此操作,但这在这里不起作用,因为 ToolTip
与父控件不在同一可视化树中。
相反,您可以通过父级 ToolTip
上的 PlacementTarget
属性 访问控件。
<Setter Property="Text" Value="{Binding PlacementTarget.(dp:ToolTipAttachedProperty.Texto), RelativeSource={RelativeSource AncestorType={x:Type ToolTip}}}"/>
另请检查您的 XAML 是否有拼写错误。附加属性类型在 StackPanel
和 ToolTip
样式中不匹配:ToolTipDependencyProperty
或 ToolTipAttachedProperty
?