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

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

CaliburnMicro IsVisibleChanged 不觸發

CaliburnMicro IsVisibleChanged 不觸發

C#
溫溫醬 2023-09-16 15:07:57
事件IsVisibleChanged無法路由到 ViewModel??赡苁鞘裁丛??如果我使用 CodeBehind 將事件作為普通 WPF 事件(無 Caliburn Message.Atach)進行測試,則該事件將按預期觸發。Message.Atach如果我使用 UserControl 的其他事件(例如 )測試 Caliburn LayoutUpdated,它們會像 ViewModel 中預期的那樣工作。但我無法被IsVisibleChanged解雇到我的 ViewModel??捶?lt;UserControl x:Class="MySetupDeviceConfig.Views.SetupDeviceConfigView"          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"          xmlns:cal="http://www.caliburnproject.org"         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"          mc:Ignorable="d" Visibility="{Binding Visibility}"         d:DesignHeight="450" d:DesignWidth="800"          cal:Message.Attach="[Event IsVisibleChanged] = [Action UcIsVisibleChanged];">    <Grid>    ...視圖模型public class SetupDeviceConfigViewModel : Screen{    private Visibility _Visibility;    private ILogger Log { get; set; }    public Visibility Visibility { get => _Visibility; set { _Visibility = value; NotifyOfPropertyChange(); } }    // ...    public void UcIsVisibleChanged()    {        Log.LogInformation("IsVisibleChanged");    }使用 Caliburn.Micro v4.0.62-alpha 和 CaliburnMicro v3.2.0 進行測試例如,更改為Loaded具有相同操作/功能映射的視圖中的事件 -> 它可以工作。所以不存在類型不匹配...    cal:Message.Attach="[Event Loaded] = [Action UcIsVisibleChanged];">
查看完整描述

3 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

其不起作用的原因是這IsVisibleChanged是一個 CLR 事件而不是路由事件。

Caliburn.Micro 的消息系統適用于路由事件而不是 CLR 事件。由于Caliburn.MicroEventTrigger內部使用。

為什么不直接綁定到IsVisible


查看完整回答
反對 回復 2023-09-16
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

難道你的財產不需要被調用IsVisible而不是Visibility?或者,將調用NotifyOfPropertyChange從默認更改為NotifyOfPropertyChange("IsVisible")。



查看完整回答
反對 回復 2023-09-16
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

嘗試將操作放置在GridUserControl 內的第一個元素( )上,而不是放在 UserControl 本身上。我自己嘗試了一下,它似乎在網格上工作,但在用戶控件本身上不起作用,可能是 Caliburn 錯誤嗎?

我還注意到,當我在代碼隱藏中切換網格的可見性時,該事件沒有被觸發,但是當我將可見性依賴屬性綁定到 ViewModel 中的屬性時,它起作用了!看起來像是 Caliburn 中的另一個錯誤。

我認為將事件和綁定放置在 UserControl 內部的控件上而不是 UserControl 本身通常是一個很好的做法。如果 UserControl 從外部隱藏,則其內部的 Grid 無論如何都應該觸發可見性事件,因此實際上沒有什么區別。


查看完整回答
反對 回復 2023-09-16
  • 3 回答
  • 0 關注
  • 150 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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