1
我正在使用一些带有模板内容的按钮c#/ WPF在资源字典数据触发器中使用c#变量
例如,
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}
为数据触发器的值。
非常感谢
勒
它的工作静态情况下,但我怎么能当CurrentNumber的值发生变化时触发器是否被触发?谢谢 – Rene
@Rene:您需要实现INotifyPropertyChanged接口并在CurrentNumber属性设置为新值时引发PropertyChanged事件:https://msdn.microsoft.com/zh-cn/library/system.componentmodel.inotifypropertychanged (v = vs.110).aspx – mm8
它的工作原理!非常感谢 – Rene