国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

WPF實(shí)現(xiàn)更加靈活綁定復(fù)雜Command(使用Microsoft XAML Behaviors 庫(kù))

這篇具有很好參考價(jià)值的文章主要介紹了WPF實(shí)現(xiàn)更加靈活綁定復(fù)雜Command(使用Microsoft XAML Behaviors 庫(kù))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、安裝NuGet

????????WPF實(shí)現(xiàn)更加靈活綁定復(fù)雜Command(使用Microsoft XAML Behaviors 庫(kù)),wpf,microsoft

2、在XAML的命名空間引入:

xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

3、使用(這里是設(shè)置了一個(gè)Canvas的點(diǎn)擊事件,其它面板也是類(lèi)似這樣設(shè)置):

<Canvas Background="Aqua">
    <Rectangle Stroke="Red" 
               Width="{Binding RectModel.RectangleWidth}" 
               Height="{Binding RectModel.RectangleHeight}" 
               Canvas.Left="{Binding RectModel.RectangleLeft}" 
               Canvas.Top="{Binding RectModel.RectangleTop}"/>
    <i:Interaction.Triggers>
        <!--EventName是Command指定的Action-->
        <i:EventTrigger EventName="MouseDown">
            <i:InvokeCommandAction Command="{Binding MouseDownCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Canvas>

? ? ? ? --我這里的ViewModel部分是這樣子的

public SimpleCommand MouseDownCommand { get; private set; }   
// 構(gòu)造方法中初始化
MouseDownCommand = new SimpleCommand { DoExecute = new Action<object>(MouseDown) };


/// <summary>
/// 鼠標(biāo)按下的命令執(zhí)行邏輯
/// </summary>
/// <param name="obj"></param>
/// <exception cref="NotImplementedException"></exception>
private void MouseDown(object obj)
{
    Debug.WriteLine("觸發(fā)Canvas的MouseDown命令");
}


/// SimpleCommand類(lèi)是這樣的:
public class SimpleCommand : ICommand
{
    public event EventHandler CanExecuteChanged;
    public Action<object> DoExecute { get; set; }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        if (DoExecute != null)
        {
            DoExecute(parameter);
        }
    }
}

4、這樣就可以在ViewModel中直接給這個(gè)Command內(nèi)容了,不用像之前那么麻煩地綁定Command了,這樣更加清晰,Command也可以有花樣地組合

補(bǔ)充:

在Border中使用:

<b:Interaction.Triggers>
    <b:EventTrigger EventName="MouseLeftButtonDown">
        <!--基于命令-->
        <!--<b:InvokeCommandAction Command="{Binding MouseDownCommand}" PassEventArgsToCommand="True"></b:InvokeCommandAction>-->
        <!--基于方法-->
        <b:CallMethodAction TargetObject="{Binding}" MethodName="DoMouseLeftButtonDown"/>
    </b:EventTrigger>
</b:Interaction.Triggers>

基于命令中的:這個(gè)PassEventArgsToCommand起到的作用就是將觸發(fā)事件的參數(shù)傳遞給綁定的Command。(可以獲取鼠標(biāo)點(diǎn)擊位置啊這些)

基于方法的:MethodName中的就是ViewModel里面的方法

這里的Interaction.Triggers是附加屬性

InvokeCommandAction和CallMethodAction都是附加行為:<b:Interaction.Triggers> 添加了一個(gè)事件觸發(fā)器(EventTrigger),當(dāng)指定的事件發(fā)生時(shí)(在這里是 MouseLeftButtonDown),執(zhí)行特定的動(dòng)作(InvokeCommandAction),這是一個(gè)典型的附加行為。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-759378.html

到了這里,關(guān)于WPF實(shí)現(xiàn)更加靈活綁定復(fù)雜Command(使用Microsoft XAML Behaviors 庫(kù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • WPF MvvM框架(MvvMLight,Microsoft Toolkit Mvvm,CommunityToolkit.Mvvm;鼠標(biāo),鍵盤(pán),手寫(xiě)等事件綁定如:抬起按下事件)

    WPF MvvM框架(MvvMLight,Microsoft Toolkit Mvvm,CommunityToolkit.Mvvm;鼠標(biāo),鍵盤(pán),手寫(xiě)等事件綁定如:抬起按下事件)

    目錄 1.MvvMLight(已廢棄) 2. Microsoft Toolkit Mvvm(已廢棄) ?3.CommunityToolkit.Mvvm框架 4.Mvvm中的事件綁定 4.1 DataGrid表中按鈕點(diǎn)擊事件 4.2 綁定 鼠標(biāo)事件,鍵盤(pán)事件,手寫(xiě)筆事件,多點(diǎn)觸控事件 5.和PLC設(shè)備建立聯(lián)系(聯(lián)調(diào))? ? 本文中,繼承接口,同步數(shù)據(jù)方法,command用法均一致; 1.繼

    2024年02月04日
    瀏覽(21)
  • 【Android】使用 `reactor.core.scheduler.Schedulers` 提供的線(xiàn)程池讓開(kāi)發(fā)者更加靈活地執(zhí)行任務(wù)

    在 Android 開(kāi)發(fā)中,使用 reactor.core.scheduler.Schedulers 提供的線(xiàn)程池可以讓開(kāi)發(fā)者更加靈活地執(zhí)行任務(wù),并且可以根據(jù)具體情況選擇最合適的線(xiàn)程。 下面列舉幾種常用的線(xiàn)程池和其適用場(chǎng)景: Schedulers.single() :該調(diào)度器會(huì)使用單個(gè)線(xiàn)程來(lái)執(zhí)行任務(wù),適用于需要按照先后順序依次執(zhí)

    2024年02月09日
    瀏覽(15)
  • Python Fire:更加靈活的命令行參數(shù)

    之前介紹過(guò) Python 的 Fire 庫(kù),一個(gè)用來(lái)生成命令行工具的的庫(kù)。 請(qǐng)參考:Python Fire:自動(dòng)生成命令行接口 今天,針對(duì)命令行參數(shù),補(bǔ)充兩種更加靈活的設(shè)置方式。 *args 型的參數(shù)可以接受任意長(zhǎng)度的參數(shù)。 比如,模擬一個(gè)學(xué)校發(fā)送通知的功能: 使用起來(lái)很靈活, 從上面使用的

    2024年02月19日
    瀏覽(23)
  • C#WPF命令Command使用實(shí)例

    C#WPF命令Command使用實(shí)例

    本文實(shí)例演示C#WPF命令使用實(shí)例 定義: 命令(Command):命令表示一個(gè)任務(wù)單元,并且可跟蹤該任務(wù)的狀態(tài),實(shí)際上是實(shí)現(xiàn)了ICommand接口的類(lèi)。然而,命令實(shí)際上可以包括任務(wù)執(zhí)行的邏輯代碼,也可以不包括從而僅作為聯(lián)系命令源與命令目標(biāo)的媒介。比如,WPF 默認(rèn)的接口實(shí)現(xiàn)

    2024年02月07日
    瀏覽(17)
  • WPF 如何實(shí)現(xiàn)事件綁定 (MVVM)

    WPF 如何實(shí)現(xiàn)事件綁定 (MVVM)

    首先說(shuō)到綁定,一般是在WPF 中常見(jiàn)的,因?yàn)閃PF中有一個(gè)比較好用的框架叫做 MVVM 所以View層的按鈕等元件的的動(dòng)作都是需要和后臺(tái)ViewModel 中的函數(shù)進(jìn)行綁定的。 如 我們最常見(jiàn)的按鈕的command 綁定 這里面的command 是命令,不是事件 如果點(diǎn)擊圖片,或者按鈕抬起來(lái)的時(shí)候需要觸

    2024年02月04日
    瀏覽(19)
  • 【Python】Python 用mixin模式讓程序更加靈活

    在理解mixin之前,有必要先重溫一下模板方法模式。所謂的模板方法模式就是在一個(gè)方法中定義一個(gè)算法的骨架,并將一些實(shí)現(xiàn)步驟延遲到子類(lèi)中。模板方法可以使子類(lèi)在不改變算法結(jié)構(gòu)的情況下,重新定義算法中的某些步驟。在這里,算法也可以理解為行為。 模板方法模式

    2024年02月10日
    瀏覽(20)
  • WPF .Net6框架下, 使用 Microsoft.Xaml.Behaviors.Wpf 的Interaction.Triggers特性,實(shí)現(xiàn)ComboBox 在展開(kāi)時(shí),觸發(fā)刷新列表內(nèi)容的動(dòng)作

    ComboBox 在WPF中是常見(jiàn)的控件。 一般情況下,在綁定好數(shù)據(jù)源后,其內(nèi)容是固定的。 當(dāng)然,你也可以實(shí)時(shí)刷新,但這將帶來(lái)較高的資源消耗。 因此有個(gè)折中的辦法: 只在它在展開(kāi)時(shí),自動(dòng)更新列表內(nèi)容。 當(dāng)前文章基于 .Net6框架,其他框架不適用。 這個(gè)是用于平替winform某個(gè)組

    2024年02月09日
    瀏覽(23)
  • 如何讓W(xué)PF中的ValidationRule實(shí)現(xiàn)參數(shù)綁定

    應(yīng)用開(kāi)發(fā)過(guò)程中,常常會(huì)對(duì)用戶(hù)輸入內(nèi)容進(jìn)行驗(yàn)證,通常是基于類(lèi)型、范圍、格式或者特定的要求進(jìn)行驗(yàn)證,以確保輸入符合預(yù)期。例如郵箱輸入框校驗(yàn)輸入內(nèi)容是否符合郵箱格式。在WPF中,數(shù)據(jù)模型允許將 ValidationRules 與 Binding 對(duì)象關(guān)聯(lián),可以通過(guò)繼承 ValidationRule 類(lèi)并重寫(xiě)

    2024年02月12日
    瀏覽(23)
  • WPF浮窗Popup控件與命令Command簡(jiǎn)單使用

    上面是WPF前端代碼,其中圖片Image要自己在項(xiàng)目下新建一個(gè)Resource文件夾把圖片添加進(jìn)去,WPF后臺(tái)窗體代碼為: 在另外新建一個(gè)類(lèi),俗稱(chēng)MVVM模式中的VM文件,文件暫時(shí)命名為MainWindowVM,類(lèi)文件內(nèi)容如下: 值得注意的是要引用包CommonServiceLocator,操作如下:右擊項(xiàng)目名-屬性-NuGet管理包,檢索包

    2024年02月07日
    瀏覽(23)
  • WPF 查看綁定錯(cuò)誤——Snoop 的基本使用

    WPF 查看綁定錯(cuò)誤——Snoop 的基本使用

    可以通過(guò) Snoop 查看 WPF 程序的 Visual Tree,更多介紹請(qǐng)看 snoopwpf 一、下載 snoopwpf.msi 安裝后打開(kāi),選擇自己的程序,點(diǎn)擊 snoop(望遠(yuǎn)鏡) 二、篩選 點(diǎn)擊左側(cè)下拉列表,選擇 Show only elements with binding errors 三、點(diǎn)擊出錯(cuò)的節(jié)點(diǎn),右側(cè)點(diǎn)擊 Properties,然后滾動(dòng)表格,找到標(biāo)紅的一行

    2024年02月11日
    瀏覽(10)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包