ورود

View Full Version : خطا در رویداد Focus



MMRavari
شنبه 13 آذر 1400, 05:55 صبح
با سلام
من در برنامه برای رویداد Focus از دستورات زیر استفاده کردم

<Storyboard x:Key="FocusedOn">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00.1" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="FocusedOff">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00.3" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>


اما برنامه در هنگام اجرا با خطای پیدا نشدن روبرو میشه
153609
ممنون میشم راهنمایی کنین

SajjadKhati
شنبه 13 آذر 1400, 10:25 صبح
سلام
میگه در تمپلیت ای که دارین مینویسین ، کنترلی با نام FocusVisualElement که نام بردین ، وجود نداره .

MMRavari
شنبه 13 آذر 1400, 19:41 عصر
ممنون دوست عزیز
میدونم ولی من در قسمت کد نویسی این کنترل رو تعریف کردم و برای FocusedOn و FocusedOff اون توابعی رو قراردادم

SajjadKhati
شنبه 13 آذر 1400, 22:59 عصر
کل کد بخش تمپلیت را بذارید .
اگه میذارید ، لطفا در تگ code بذارید . نه در تگ "نقل قول" که در پست اول گذاشتید .

MMRavari
یک شنبه 14 آذر 1400, 05:25 صبح
کد درج شده

<LinearGradientBrush x:Key="TextBoxOver" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#FF5296BD" Offset="0.000"/>
<GradientStop Color="#FFC2E4F6" Offset="0.355"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TextBoxFocus" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#FF3B79AC" Offset="0.000"/>
<GradientStop Color="#FFB2DBED" Offset="0.355"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TextBoxNorm" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFABAEB3" Offset="0"/>
<GradientStop Color="#FFE2E8EE" Offset="0.355"/>
</LinearGradientBrush>
<Style x:Key="PTextBox" TargetType="{x:Type TextBox}">
<Setter Property="FlowDirection" Value="RightToLeft"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<ControlTemplate.Resources>
<Storyboard x:Key="HoverOn">
<DoubleAnimation Duration="00:00:00.1" Storyboard.TargetName="Over" Storyboard.TargetProperty="Opacity" To="1"/>
</Storyboard>
<Storyboard x:Key="HoverOff">
<DoubleAnimation Duration="00:00:00.4" Storyboard.TargetName="Over" Storyboard.TargetProperty="Opacity" To="0"/>
</Storyboard>
<Storyboard x:Key="FocusedOn">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00.1" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="FocusedOff">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00.3" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</ControlTemplate.Resources>
<Grid>
<Border x:Name="BorderBase" Background="{TemplateBinding Background}" BorderBrush="{StaticResource TextBoxNorm}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="15"/>
<Border x:Name="Over" BorderBrush="{StaticResource TextBoxOver}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="15" Opacity="0"/>
<ScrollViewer x:Name="PART_ContentHost" Margin="0" Padding="{TemplateBinding Padding}"/>
<Border x:Name="DisabledVisualElement" Background="#A5FFFFFF" BorderBrush="#59C0C0C0" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="15" IsHitTestVisible="False" Visibility="Collapsed"/>
<Border x:Name="FoucsedVisualElement" BorderBrush="{StaticResource TextBoxFocus}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="15" IsHitTestVisible="False" Opacity="0"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True">
<Trigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource FocusedOff}" x:Name="FocusedOff_BeginStoryboard"/>
</Trigger.ExitActions>
<Trigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource FocusedOn}" x:Name="FocusedOn_BeginStoryboard"/>
</Trigger.EnterActions>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsFocused" Value="False"/>
</MultiTrigger.Conditions>
<MultiTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource HoverOff}" x:Name="HoverOff_BeginStoryboard"/>
</MultiTrigger.ExitActions>
<MultiTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource HoverOn}"/>
</MultiTrigger.EnterActions>
</MultiTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="#888"/>
<Setter Property="Visibility" TargetName="DisabledVisualElement" Value="Visible"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

SajjadKhati
یک شنبه 14 آذر 1400, 20:12 عصر
سلامی مجدد
خوب ، المنتی به نام FocusVisualElement را در این کد و اسکوپ تون تعریف نکردید دیگه .

MMRavari
دوشنبه 15 آذر 1400, 18:25 عصر
ممنون دوست عزیز
من در خط 41 بوردی رو تعریف کردم که نامش رو به x:Name="FoucsVisualElement" تغییر دادم ولی بازم خطا میده

SajjadKhati
دوشنبه 15 آذر 1400, 19:21 عصر
کل کدش با متن اروری که میده را بذارید.

MMRavari
چهارشنبه 17 آذر 1400, 20:25 عصر
ببخشید
کل کد رو قراردادم و ارور رو هم در اول سوالم ارائه کردم
فقط اومدم در خط 41 x:Name="FoucsedVisualElement" رو به x:Name="FoucsVisualElement" تغییر دادم

SajjadKhati
چهارشنبه 17 آذر 1400, 21:55 عصر
ببخشید
کل کد رو قراردادم و ارور رو هم در اول سوالم ارائه کردم
فقط اومدم در خط 41 x:Name="FoucsedVisualElement" رو به x:Name="FoucsVisualElement" تغییر دادم

چه خطایی میده؟
تگ ControlTemplate را برای این کد در کد بالایی که دادید ، نذاشتید . بذارید .
تمپلیتِ چه نوع کنترلی هست؟

MMRavari
پنج شنبه 18 آذر 1400, 08:15 صبح
ممنون دوست عزیز کل برنامه رو ضمیمه کردم

SajjadKhati
پنج شنبه 18 آذر 1400, 21:51 عصر
ممنون دوست عزیز
من در خط 41 بوردی رو تعریف کردم که نامش رو به x:Name="FoucsVisualElement" تغییر دادم ولی بازم خطا میده

املای اسم را اشتباه مینویسید .
FocusVisualElement بود ، نه FoucsVisualElement .

ضمنا ، نوعِ نوشتنِ تمپلیت تون خوب نیست .
چند تا border درست کردین که اصلا تو در تو نیستن و ... .
اصولی اش اینه که کدهای تمپلیت مایکروسافت را کپی کنین و بعد تغییرات مورد نظرتون را روش اِعمال کنید .

MMRavari
جمعه 19 آذر 1400, 16:49 عصر
با تشکر
ولی دارم برای آموزش روش های مختلف رو امتحان میکنم

MMRavari
جمعه 19 آذر 1400, 17:23 عصر
برای بوردر خودم اومدم افکتی تعریف کردم
اگر بخوام این افکت رو درون Storyboard تعریف کنم با چگونه عمل کنم

<Border x:Name="BorderBase" Background="{TemplateBinding Background}" BorderBrush="{StaticResource TextBoxNorm}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="15">
<Border.Effect>
<DropShadowEffect Color="#FFABAEB3" BlurRadius="10" ShadowDepth="5" />
</Border.Effect>
</Border>

SajjadKhati
جمعه 19 آذر 1400, 18:32 عصر
با تشکر
ولی دارم برای آموزش روش های مختلف رو امتحان میکنم

اگه در حد تست هست که هیچ .
ولی روش های مختلف ، یه اصولی را باید رعایت کنه .
چند تا border ، اون هم نه تو در تو را کنار هم تعریف میکنید که چی!
چند جای دیگه هم بهتر بود که کدها را یه جور دیگه ای مینوشتید .


برای بوردر خودم اومدم افکتی تعریف کردم
اگر بخوام این افکت رو درون Storyboard تعریف کنم با چگونه عمل کنم

<Border x:Name="BorderBase" Background="{TemplateBinding Background}" BorderBrush="{StaticResource TextBoxNorm}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="15">
<Border.Effect>
<DropShadowEffect Color="#FFABAEB3" BlurRadius="10" ShadowDepth="5" />
</Border.Effect>
</Border>



Border ، از نوع UIElement هست که در این کلاس ، پروپرتیِ Effect داره .
Storyboard که از این نوع نیست .

MMRavari
شنبه 20 آذر 1400, 18:23 عصر
ممنون دوست عزیز
چون نتونستم آموزش مناسبی پیدا کنم بصورت سعی و خطا عمل میکنم
به هر حال ممنون

SajjadKhati
شنبه 20 آذر 1400, 19:00 عصر
ممنون دوست عزیز
چون نتونستم آموزش مناسبی پیدا کنم بصورت سعی و خطا عمل میکنم
به هر حال ممنون
سعی و خطا معنا نداره .
قبلا لینک آموزش مایکروسافت را بهتون داده بودم که با جستجوی ساده هم میتونستین پیدا کنین .