【发布时间】:2017-05-18 09:24:00
【问题描述】:
我正在使用一些带有模板内容的按钮
例如
button.Template = (ControlTemplate)FindResource("StatusEmpty");
在文件后面的同一代码中有一个名为 currentNumber 的(全局)字段
private int currentNumber = 1;
public int CurrentNumber
{
get
{
return currentNumber;
}
}
这些模板在合并的 RessourceDictionary 中定义
<ControlTemplate x:Key="BinStatusEmpty" TargetType="Button">
<Border x:Name="border" BorderBrush="LightGray" CornerRadius="8,8,8,8" Margin="3" >
<Border.Background>
<LinearGradientBrush>
<GradientStop Offset="0" Color="white"></GradientStop>
<GradientStop Offset="1" Color="LightGray"></GradientStop>
</LinearGradientBrush>
</Border.Background>
<ContentPresenter Content = "{TemplateBinding Content}"
HorizontalAlignment = "Center" VerticalAlignment = "Center"
TextBlock.FontSize="40"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Blue" TargetName="border" />
<Setter Property="BorderThickness" Value="4" TargetName="border" />
</Trigger>
<DataTrigger Binding="{Binding currentNumber, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" Value="{TemplateBinding Content}" >
<Setter Property="BorderBrush" Value="Blue" TargetName="border" />
<Setter Property="BorderThickness" Value="4" TargetName="border" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
我想要的是一个数据触发器,它根据当前c#变量改变模板动态中定义的边框。
目前有两个问题: 1)绑定
{Binding currentNumber, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}
找不到我的变量
BindingExpression path error: 'currentNumber' property not found on 'object' ''MainWindow' (Name='xMainWindow')'. BindingExpression:Path=currentNumber; DataItem='MainWindow' (Name='xMainWindow'); target element is 'BinButton' (Name=''); target property is 'NoTarget' (type 'Object')
2) 我无法绑定
{TemplateBinding Content}
作为数据触发器的值。
非常感谢
勒内
【问题讨论】: