亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

UpdateSourceTrigger=PropertyChanged 綁定到與綁定屬性不同的屬

UpdateSourceTrigger=PropertyChanged 綁定到與綁定屬性不同的屬

C#
慕姐8265434 2022-06-12 16:22:02
假設我綁定到控件的可見性:Visibility="{Binding Path=Name, Converter={StaticResource NameToVisibilityConverter}}"有了這個,它在應用程序第一次啟動時運行良好,但是當NameToVisibilityConverter更改中的某個參數導致可見性不同,但Name可見性必須保持不變時,轉換器不會重新觸發。我可以試試這個:Visibility="{Binding Path=Name, Converter={StaticResource NameToVisibilityConverter}, UpdateSourceTrigger=PropertyChanged}"添加 aUpdateSourceTrigger=PropertyChanged對這種情況沒有幫助,因為它Binding Path=.是相同的并且不會觸發 valueconverter 再次轉換。如何更改的屬性,UpdateSourceTrigger=PropertyChanged使其在不同的屬性上觸發Name(我想要實現的就像UpdateSourceProperty與當前綁定不同的屬性):Visibility="{Binding Path=Name, Converter={StaticResource NameToVisibilityConverter}, UpdateSourceTrigger=PropertyChanged, UpdateSourceProperty={Binding Path=Count}"謝謝!如果有什么需要澄清的,請告訴我。底線是我需要一個 valueConverter 比綁定屬性更改的頻率更頻繁。
查看完整描述

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接口。


查看完整回答
反對 回復 2022-06-12
?
慕桂英4014372

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))

每次不僅更改名稱,還更改控件所依賴的其他屬性。然后綁定將更新,就好像您更改了名稱一樣。


查看完整回答
反對 回復 2022-06-12
  • 2 回答
  • 0 關注
  • 336 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號