WPF之ContextMenu的命定綁定


在WPF中右擊菜單項的XMAL代碼是:

<ContextMenu x:Key="sampleContextMenu">
<MenuItem Header="在前面插入行" Click="InsertRowFront_Click"/>
<MenuItem Header="在后面插入行" Click="InsertRowBehind_Click"/>
<MenuItem Header="刪除行" Click="DeleteRow_Click"/>
<MenuItem Header="debug1" Command="{Binding cmd1}"/>
</ContextMenu>

比如想在TEXTBOX中右擊時候出現菜單,只需有在TEXTBOX中使用

                <TextBox x:Name="textBoxName" Text="{Binding textValue,Mode=TwoWay}" Width="75" Height="36" ContextMenu="{StaticResource sampleContextMenu}" Style="{DynamicResource TextBoxStyle1}"/>

然后以上代碼如果是在<UserControl>標簽中使用的話,使用Click綁定的函數只能定義在<UserControl>的后台代碼中,如果使用Command綁定的話,不管命定定義在<UserControl>還是引用<UserControl>的<Window>的后台代碼中,都無法有效綁定,經過多次嘗試,我在XMAL中引入MainWindow,將命定cmd1定義在Mainwindow的后台代碼中

<local:MainWindow x:Key="dataContextProxy"/>

然后將菜單代碼改為 <MenuItem Header="debug1" Command="{Binding cmd1,Source={StaticResource dataContextProxy}}"/>

發現有效使用命令。

 

之前我在<UserControl>的后台代碼中定義命定使用this.DataContext=this,無法有效綁定命定,在<MainWindow>d的后台代碼中定義命定並將UserControl的DataContext指向MainWindow同樣無效。至於為什么會出現這種情況,等以后有時間慢慢研究。。

至於為何會出現這種情況,還等以后有時間慢慢研究。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM