View Full Version : سوال: غیر فعال شدن منو با command application
cazino86
پنج شنبه 11 شهریور 1389, 09:25 صبح
سلام ...
وقتی دستور Open و یا New رو در command application برای یک منو قرار میدم اون منو غیر فعال میشه ! خاصیت isenabled برابر false میشه .
mahdi7s
شنبه 13 شهریور 1389, 13:08 عصر
رویداد Executed را هندل کنید و کد مربوط به باز پنجره ای را که می خواهید داخلش قرار دهید
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Open" Executed="CommandBinding_Executed" />
</Window.CommandBindings>
<Grid>
<Menu VerticalAlignment="Top" >
<MenuItem Command="ApplicationCommands.Open" />
</Menu>
</Grid>
Amir Oveisi
شنبه 13 شهریور 1389, 15:57 عصر
وقتی از command برای یک کنترل استفاده می کنید، اون کنترل زمانی enable خواهد بود که متد مربوط به رویداد CanExecute اون command مقدار true برگردونه، در غیر اینصورت زمانی که کنترل شما Disable هست معنی اش اینه که command در حال حاضر نمیتونه اجرا بشه.
در command های موجود در WPF (که آماده هستن و خودتون نساختین) این مهمه که شما چه command ای رو برای چه کنترلی استفاده می کنین و باید بدونین که این command برای این کنترل چه زمانی قابل اجراست. مثلا بعضی Command ها زمانی قابل اجرا هستن که کنترل مورد نظر دارای فوکوس باشه و ...
همونطور که دوستمون اشاره کردن برای منو و New Command باید در CommandBindings مربوط به Window، یک CommandBinding ایجاد کنید برای New و رویداد Executed اون رو هندل کنید. با این کار منو Disable نخواهد بود و با کلیک بر اون کد های هندلر برای رویداد Executed اجرا میشن.
کد زیر رو ببینید:
<Window x:Class="WpfApplication6.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.CommandBindings>
<CommandBinding Command="New" Executed="MenuItem_Executed"/>
</Window.CommandBindings>
<Grid>
<Menu Height="23" HorizontalAlignment="Stretch" Name="menu1" VerticalAlignment="Top">
<MenuItem Header="New" Command="New"/>
</Menu>
<TextBox Name="txt1" Margin="50"/>
</Grid>
</Window>
کد مربوط به event handler :
private void MenuItem_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("test");
}
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.