2 回答
TA贡献1839条经验 获得超15个赞
如何更改 U 的属性,pdateSourceTrigger=PropertyChanged使其在与 Name 不同的属性上触发(我想要实现的就像UpdateSourceProperty与当前绑定不同的属性):
转换器仅在数据绑定属性更改时调用。更改的值UpdateSourceTrigger不会改变任何东西。
MultiBinding您可以做的是使用一个和一个多值转换器绑定到多个属性,例如:
<SomeControl.Visibility>
<MultiBinding Converter="{StaticResource NameToVisibilityConverter}">
<Binding Path="Name" />
<Binding Path="SomeOtherPropertyThatShouldTriggerTheConverter" />
</MultiBinding>
</SomeControl.Visibility>
然后,您的转换器类应该实现IMultiValueConverter接口而不是IValueConverter接口。
TA贡献1871条经验 获得超13个赞
首先,UpdateSourceTrigger 与你需要的效果无关。它用于在窗口中更改属性时更新源(在您的情况下为名称)。如果您希望在更改源时更改属性,您应该首先在模型类中实现 INotifyPropertyChanged 接口。
class Model
{
private string name;
public string Name
{
get=>name;
set
{
name = value;
OnPropertyChanged(nameof(Name));
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string prop = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
然后,如果您将 Name 属性绑定到窗口中的某个控件属性,则每次设置此属性时,它将触发PropertyChanded该属性的事件Name并更新绑定。
如果属性依赖于模型中的多个属性并且应该在任何模型属性更改时更新,最合乎逻辑的方法是使用MultiBindingwith IMultiValueConverter。但如果由于某种原因你不想或不能这样做,你可以开火
OnPropertyChanged(nameof(Name))
每次不仅更改名称,还更改控件所依赖的其他属性。然后绑定将更新,就好像您更改了名称一样。
- 2 回答
- 0 关注
- 291 浏览
添加回答
举报