ورود

View Full Version : خطای خروج از Style



MMRavari
پنج شنبه 24 مهر 1399, 20:02 عصر
با سلام
به تمامی استادید محترم
من برای دکمه خروج یک استایل بصورت زیر نوشتم

<Style x:Key="CloseButton" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Canvas MaxHeight="50" MaxWidth="50">
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.05" To="1" Storyboard.TargetName="border" Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="Canvas.MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.05" To="0.5" Storyboard.TargetName="border" Storyboard.TargetProperty="Opcity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="Canvas.MouseLeftButtonDown">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.05" To="0.5" Storyboard.TargetName="border" Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
<Rectangle x:Name="border" Width="50" Height="50" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10" Opacity="0.5">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Line X1="10" Y1="10" X2="40" Y2="40" StrokeThickness="5" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
<Line.Stroke>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Line.Stroke>
</Line>
<Line X1="40" Y1="10" X2="10" Y2="40" StrokeThickness="5" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
<Line.Stroke>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Line.Stroke>
</Line>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ولی در زمان خروج از اون خطای زیر رخ میده


System.InvalidOperationException: 'Cannot resolve all property references in the property path 'Opcity'. Verify that applicable objects support the properties.'


نمیدونم مشکل چیه
همچنین برای خروج از فرم و ورود به فرم مادر باید چه دستوری رو اجرا کنم ممنون

barnamenevisjavan
پنج شنبه 24 مهر 1399, 20:43 عصر
با سلام
به تمامی استادید محترم
من برای دکمه خروج یک استایل بصورت زیر نوشتمولی در زمان خروج از اون خطای زیر رخ میده




نمیدونم مشکل چیه
همچنین برای خروج از فرم و ورود به فرم مادر باید چه دستوری رو اجرا کنم ممنون
شما چرا وقتی دارید برای rectangle انیمیشن مینویسید رفتید داخل canvas نوشتید؟
در ثانی شما بهتره داخل استایل انیمیشن رو بنویسید و بصورت مستقیم از تریگر استفاده نکنید
وقتی داخل خود rectangle کد مینویسید دیگه نیازی به targetname نیستش
<Style x:Key="CloseButton" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Canvas MaxHeight="50" MaxWidth="50">
<Rectangle x:Name="border" Width="50" Height="50" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10" Opacity="0.5">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>


<Rectangle.Style>
<Style TargetType="Rectangle">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.05" To="1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>


<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.05" To="0.5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>


<EventTrigger RoutedEvent="MouseLeftButtonDown">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.05" To="0.5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>




</Rectangle>
<Line X1="10" Y1="10" X2="40" Y2="40" StrokeThickness="5" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
<Line.Stroke>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Line.Stroke>
</Line>
<Line X1="40" Y1="10" X2="10" Y2="40" StrokeThickness="5" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
<Line.Stroke>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Line.Stroke>
</Line>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

MMRavari
جمعه 25 مهر 1399, 05:54 صبح
شما چرا وقتی دارید برای rectangle انیمیشن مینویسید رفتید داخل canvas نوشتید؟
در ثانی شما بهتره داخل استایل انیمیشن رو بنویسید و بصورت مستقیم از تریگر استفاده نکنید
وقتی داخل خود rectangle کد مینویسید دیگه نیازی به targetname نیستش

ممنون از توجهتون
من دارم یاد میگیرم و دلایل سوالات شما رو نمیدونم
ولی ممنون از راهنمائی تون

MMRavari
جمعه 25 مهر 1399, 06:51 صبح
با سلام مجدد
در مورد مواردی که فرمودید پاسخی رو که دارم به صورت زیره
Rectangel و Line ها رو داخل Canvas نوشتم برای اینکه بتونم Event رو برای همشون ست کنم
بصورت زیر

<Style x:Key="CloseButton" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Canvas MaxHeight="25" MaxWidth="25" Opacity="0.5">
<Rectangle x:Name="border" Width="25" Height="25" Stroke="Black" StrokeThickness="1" RadiusX="10" RadiusY="10">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>

<Line X1="7" Y1="7" X2="18" Y2="18" StrokeThickness="5" StrokeEndLineCap="Round" StrokeStartLineCap="Round" Opacity="0.5">
<Line.Stroke>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Line.Stroke>
</Line>
<Line X1="18" Y1="7" X2="7" Y2="18" StrokeThickness="5" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
<Line.Stroke>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Line.Stroke>
</Line>

<Canvas.Style>
<Style TargetType="Canvas">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.5" To="1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>

<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.5" To="0.5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>

<EventTrigger RoutedEvent="MouseLeftButtonDown">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.5" To="0.7"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>


2 . تو مواردی که دیده بودم معمولا انیمیشن رو خارج از استایل می نویسن ولی دلیلش رو نمیدونم ممنون میشم راهنمایی کنید.
3 . من چون میخواستم وقت ورود به کلید ساخته شده اون اتفاق روی بده اومدم بهش نام دادم
ولی طبق گفته شما اومدم در قسمت جدید اون رو حذف کردم
از لطفتون بسیار سپاسگذارم
تنها میخواستم بدونم برای نوشتن دستورات مثل خروج از فرم جاری و ورود به فرم قبل چطوری باید اون رو معرفی کنم
اگر آموزشی در این خصوص دارید ممنون میشم برای تهیه ارائه بدین
سپاس فراوان

barnamenevisjavan
جمعه 25 مهر 1399, 11:32 صبح
با سلام مجدد
در مورد مواردی که فرمودید پاسخی رو که دارم به صورت زیره
Rectangel و Line ها رو داخل Canvas نوشتم برای اینکه بتونم Event رو برای همشون ست کنم
بصورت زیر

<Style x:Key="CloseButton" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Canvas MaxHeight="25" MaxWidth="25" Opacity="0.5">
<Rectangle x:Name="border" Width="25" Height="25" Stroke="Black" StrokeThickness="1" RadiusX="10" RadiusY="10">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>

<Line X1="7" Y1="7" X2="18" Y2="18" StrokeThickness="5" StrokeEndLineCap="Round" StrokeStartLineCap="Round" Opacity="0.5">
<Line.Stroke>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Line.Stroke>
</Line>
<Line X1="18" Y1="7" X2="7" Y2="18" StrokeThickness="5" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
<Line.Stroke>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Line.Stroke>
</Line>

<Canvas.Style>
<Style TargetType="Canvas">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.5" To="1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>

<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.5" To="0.5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>

<EventTrigger RoutedEvent="MouseLeftButtonDown">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Opacity">
<DoubleAnimation Duration="0:0:0.5" To="0.7"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>


2 . تو مواردی که دیده بودم معمولا انیمیشن رو خارج از استایل می نویسن ولی دلیلش رو نمیدونم ممنون میشم راهنمایی کنید.
3 . من چون میخواستم وقت ورود به کلید ساخته شده اون اتفاق روی بده اومدم بهش نام دادم
ولی طبق گفته شما اومدم در قسمت جدید اون رو حذف کردم
از لطفتون بسیار سپاسگذارم
تنها میخواستم بدونم برای نوشتن دستورات مثل خروج از فرم جاری و ورود به فرم قبل چطوری باید اون رو معرفی کنم
اگر آموزشی در این خصوص دارید ممنون میشم برای تهیه ارائه بدین
سپاس فراوان
خب برای اینکه ایونت رو برای همشون ست کنید بهتره تو تریگر خود باتن بنویسید، بهتر اینه که داخل استایل بنویسید. البته فرق چندانی هم نداره. احتمالا مشکل از اونجا بوده که تارگت نیم رو نمیتونسته پیدا کنه!
سوال اخرتون رو متوجه نشدم میخاید چیکار کنید؟ میخاید داخل window1 یه window2 ایجاد کنید و قبلی رو ببندید؟ و دوباره از window2 برگردید به window1؟
جدیدترین و کاملترین اموزش که خودم تهیه کردم:چشمک:
https://www.daneshjooyar.com/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-wpf-%d8%ac%d8%a7%d9%85%d8%b9-%d9%be%d8%b1%d9%88%da%98%d9%87-%d9%85%d8%ad%d9%88%d8%b1/

MMRavari
جمعه 25 مهر 1399, 18:49 عصر
با سلام
مرسی از پاسختون
کلیدی رو که ساختم برای خروج از فرم هست یعنی با کلیک اون فرم من باید بسته بشه
اما فرم من فرم Main نیست و میخوام با بسته شدن اون فرم اصلی فعال بشه
میدونم برای اینکار باید کلاسی ایجاد کنم اما دستوراتش رو نمیدونم
در مورد آنوزشتون ممنون حتمأ تهیه میکنم
مرسی

barnamenevisjavan
شنبه 26 مهر 1399, 17:18 عصر
با سلام
مرسی از پاسختون
کلیدی رو که ساختم برای خروج از فرم هست یعنی با کلیک اون فرم من باید بسته بشه
اما فرم من فرم Main نیست و میخوام با بسته شدن اون فرم اصلی فعال بشه
میدونم برای اینکار باید کلاسی ایجاد کنم اما دستوراتش رو نمیدونم
در مورد آنوزشتون ممنون حتمأ تهیه میکنم
مرسی
برای بستن میتونید این پرسش پاسخ رو بخونید و کدهاش رو تست کنید
شما نیاز به استفاده از command دارید
https://stackoverflow.com/questions/1065887/how-to-bind-close-command-to-a-button