在 XAML C# 中的样式中设置绑定 属性
Set Binding property in Style in XAML C#
我正在寻找一种在 Style
中设置绑定 属性 UpdateSourceTrigger
的方法。目前我在每个 TextBox
上手动设置它,如下所示:
<TextBox Text="{Binding boundValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
我想做的是这样的(但这显然行不通):
<Window.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Binding.UpdateSourceTrigger" Value="PropertyChanged" />
</Style>
</Window.Resources>
<Grid>
<TextBox Text="{Binding boundValue, Mode=TwoWay}"/>
</Grid>
样式适用于 FrameworkElements(和派生控件)。
Binding 不是 FrameworkElement。
无论如何,您可以创建自己的 markup extension 来设置您需要的绑定属性:
public class PropertyChangedBinding : Binding
{
public PropertyChangedBinding(string path)
: base(path)
{
UpdateSourceTrigger = System.Windows.Data.UpdateSourceTrigger.PropertyChanged;
}
public PropertyChangedBinding()
: base()
{
UpdateSourceTrigger = System.Windows.Data.UpdateSourceTrigger.PropertyChanged;
}
}
所以在你的 XAML 中你可以使用 {local:PropertyChangedBinding ...}
.
我正在寻找一种在 Style
中设置绑定 属性 UpdateSourceTrigger
的方法。目前我在每个 TextBox
上手动设置它,如下所示:
<TextBox Text="{Binding boundValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
我想做的是这样的(但这显然行不通):
<Window.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Binding.UpdateSourceTrigger" Value="PropertyChanged" />
</Style>
</Window.Resources>
<Grid>
<TextBox Text="{Binding boundValue, Mode=TwoWay}"/>
</Grid>
样式适用于 FrameworkElements(和派生控件)。
Binding 不是 FrameworkElement。
无论如何,您可以创建自己的 markup extension 来设置您需要的绑定属性:
public class PropertyChangedBinding : Binding
{
public PropertyChangedBinding(string path)
: base(path)
{
UpdateSourceTrigger = System.Windows.Data.UpdateSourceTrigger.PropertyChanged;
}
public PropertyChangedBinding()
: base()
{
UpdateSourceTrigger = System.Windows.Data.UpdateSourceTrigger.PropertyChanged;
}
}
所以在你的 XAML 中你可以使用 {local:PropertyChangedBinding ...}
.