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 關注
- 336 瀏覽
添加回答
舉報