ورود

View Full Version : مشکل در فراخوانی Class در تعریف style



MMRavari
پنج شنبه 10 آذر 1401, 11:35 صبح
با سلام
من به تازگی با مشکل فراخوانی کلاس در هنگام تعریف Style شدم
در برنامه استایل جدیدی رو ایجاد کردم

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="WindowNewStyle.WindowsStyle">
<Style x:Key="Window_01" TargetType="{x:Type Window}">
<Setter Property="AllowsTransparency" Value="True"/>
<Setter Property="WindowStyle" Value="None"/>
<Setter Property="Background" Value="Transparent"/>
<EventSetter Event="Loaded" Handler="Load"/>
</Style>
</ResourceDictionary>
درون اون Event مربوط به Loaded رو فرا خونی کردم
درون فرمت لود برنامه هم موارد زیر رو درج کردم


using System;
using System.Windows;


namespace WindowNewStyle.Themplates
{
partial class WindowsStyle
{
bool IsWindowResize=false;
WindowState state = WindowState.Normal;
void Load(object sender,EventArgs e)
{
Window window=sender as Window;
window.WindowStartupLocation=WindowStartupLocation .CenterScreen;
}
}
}
اما با خطای زیر روبرو مشم


WindowsStyle' does not contain a definition for 'Load' and no accessible extension method 'Load' accepting a first argument of type 'WindowsStyle' could be found (are you missing a using directive or an assembly reference?)
ممنون میشم راهنمایی کنید

SajjadKhati
پنج شنبه 10 آذر 1401, 17:02 عصر
سلام
فضای نام کلاس تون WindowNewStyle.Themplates هست اما در مقداردهیِ x:Class تون ، فضای نام WindowNewStyle را دادید .
مقدار x:Class را به زیر تغییر بدید ، ببینید درست میشه؟ :



WindowNewStyle.Themplates.WindowsStyle


علاوه بر این ، اگه درست نشد ، TargetType تون را هم بجای Window ، مقدار WindowsStyle قرار بدید . تست کنید؟

MMRavari
جمعه 11 آذر 1401, 03:54 صبح
ممنون دوست عزیزی
این کار رو هم انجام دادم اما بازم ارور میده

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="WindowNewStyle.Themplates.WindowsStyle">
<Style x:Key="Window_01" TargetType="{x:Type Window}">
<Setter Property="AllowsTransparency" Value="True"/>
<Setter Property="WindowStyle" Value="None"/>
<Setter Property="Background" Value="Transparent"/>
<EventSetter Event="Loaded" Handler="Load"/>
<Setter Property="FlowDirection" Value="RightToLeft"/>
</Style>
</ResourceDictionary>

MMRavari
جمعه 11 آذر 1401, 04:07 صبح
خیلی ممنون دوست خوب
یک اشتباهی کرده بودم که درست شد

MMRavari
جمعه 11 آذر 1401, 04:34 صبح
یک سوال
من در زمان لود شدن پنجره می خوام در وسط صفحه قرار بگیره برای همین اومدم و دستور

window.WindowStartupLocation=WindowStartupLocation .CenterScreen;

رو در زمان لود شدن قراردادم اما عمل نمیکنه
چطوری مزتونم اینکارو بکنم

SajjadKhati
جمعه 11 آذر 1401, 07:53 صبح
خیلی ممنون دوست خوب
یک اشتباهی کرده بودم که درست شد

سلامی مجدد
اشکالش کجا بود؟


یک سوال
من در زمان لود شدن پنجره می خوام در وسط صفحه قرار بگیره برای همین اومدم و دستور

window.WindowStartupLocation=WindowStartupLocation .CenterScreen;
رو در زمان لود شدن قراردادم اما عمل نمیکنه
چطوری مزتونم اینکارو بکنم

یا این کدِ مربوطه اش را در کد xaml قرار بدید .
یا اگه میخواید بصورت کد سی شارپ باشه ، در متد سازنده ی کلاس window تون قرار بدید (در رویداد Loaded اش نذارید) .

MMRavari
جمعه 11 آذر 1401, 11:03 صبح
ممنون دوست خوب
مشکلش در ادامه مربوط به تعریف یک باتن بود که حل شد
به هر حال ممنون

MMRavari
جمعه 11 آذر 1401, 11:36 صبح
با سلام مجدد
من درون فرمم کلیدی رو با دستور Border ساختم
میخوام دستور کلیک رو به اون بدم
ولی Border اون رو نداره
ممنون میشم راهنمایی کنی

SajjadKhati
جمعه 11 آذر 1401, 13:23 عصر
سلام
منظورتون رویداد کلیک هست؟
میتونین از رویداد MouseLeftButtonUp ئه Border استفاده کنید . فقط دقت کنید که به Background ئه Border ، یه مقداری (ولو مقدار Transparent بدید) تا مشکل Hit Testing پیدا نکنید .

یا اینکه درون Border ، یه کنترل دیگه مثل Button و ... قرار بدید یا اینکه Border را توی Grid و اینها قرار بدید و از رویدادهای اون کنترل ها استفاده کنید .

MMRavari
شنبه 12 آذر 1401, 03:31 صبح
ممنون
چون من استایل رو برای Button استفده کردم
اومدم MouseLeftButtonDown رو درون Button تعریف کردم