PDA

View Full Version : ساخت فرم جدید با کلیدهای مربوطه



MMR_1234
سه شنبه 28 بهمن 1393, 13:36 عصر
با سلام
من با استفاده از گرید فرمم رو به سه قسمت تبدیل کردم و در اون کلیدهای مینیمایز و ماکسیمایز و کلوز رو ایجاد کردم
حالا میخوام وقتی کاربر با موس روی هر یک از کلیدها قرار گرفت رنگ اون کلید تغییر کنه و با فشرده شدن کلی رنگ انو سیاه بشه و در نهایت وقی موس از روش حرکت کرد به رنگ اول برگرده
میدونم از خصوصیت MouseMove و MouseDown و MouseUp باید استفاده کرد ولی تعریفش رو نمیدونم
سوال بعدیم هم اینه که وقتی این کلیدها رو در یک دیکشنری مجزا تعریف کنم چطوری میشه این دستورات رو تعریف نمود

ali_md110
سه شنبه 28 بهمن 1393, 20:53 عصر
برای طراحی فرم دلخواه در wpf شما یک Template باید بسازید . درون اون ControlTemplate باید قسمتهای استاندارد یک فرم شکل دهی و فرمت بندی جدید بشوند

این قسمتها



PART_TITLEBAR (UIElement) - For displaying window title, dragging and maximize / restore operations
PART_MINIMIZE (Button) – Window minimize button
PART_MAXIMIZE_RESTORE (Button) – Maximize restore button
PART_CLOSE (Button) – Close button
PART_LEFT_BORDER (UIElement) – Left resizable border
PART_RIGHT_BORDER (UIElement) – Right resizable border
PART_TOP_BORDER (UIElement) – Top resizable border
PART_BOTTOM_BORDER (UIElement) – Bottom resizable border



وتوی تمپلیت از تریگرها

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="MainWindow"
TargetType="{x:Type Window}">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Grid>
<Border x:Name="MainBorder"
BorderBrush="{DynamicResource MainWindowBorderBrush}"
BorderThickness="1"
CornerRadius="2"
Background="{DynamicResource MainWindowBackgroundBrush}">
<DockPanel LastChildFill="True">
<Rectangle x:Name="PART_LEFT_BORDER"
Width="2"
Cursor="SizeWE">
<Rectangle.Fill>
<SolidColorBrush Color="Transparent" />
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="PART_RIGHT_BORDER"
Cursor="SizeWE"
Width="2"
DockPanel.Dock="Right">
<Rectangle.Fill>
<SolidColorBrush Color="Transparent" />
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="PART_TOP_BORDER"
Cursor="SizeNS"
DockPanel.Dock="Top"
Height="2">
<Rectangle.Fill>
<SolidColorBrush Color="Transparent" />
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="PART_BOTTOM_BORDER"
Cursor="SizeNS"
Height="2"
DockPanel.Dock="Bottom">
<Rectangle.Fill>
<SolidColorBrush Color="Transparent" />
</Rectangle.Fill>
</Rectangle>
<Border x:Name="PART_TITLEBAR"
Margin="2,0,2,2"
Height="40"
DockPanel.Dock="Top"
CornerRadius="2"
Background="Transparent">
<DockPanel LastChildFill="False">
<TextBlock Margin="8,0,0,4"
VerticalAlignment="Center"
FontStretch="UltraExpanded"
Foreground="Black"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap"
Text="{TemplateBinding Title}"
FontSize="16" />
<Button x:Name="PART_CLOSE"
DockPanel.Dock="Right"
Style="{DynamicResource FlatButton}"
VerticalAlignment="Center"
Margin="0,0,4,0">
<Image Source="/MixModes.Synergy.Resources;
component/Resources/Close.png"
Stretch="None"
Margin="4" />
</Button>
<Button x:Name="PART_MAXIMIZE_RESTORE"
DockPanel.Dock="Right"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Style="{DynamicResource FlatButton}">
<Image x:Name="MaximizeRestoreImage"
Source="/MixModes.Synergy.Resources;
component/Resources/Restore.png"
Stretch="None"
Margin="4" />
</Button>
<Button x:Name="PART_MINIMIZE"
HorizontalAlignment="Center"
Style="{DynamicResource FlatButton}"
VerticalAlignment="Center"
DockPanel.Dock="Right">
<Image Margin="4"
Source="/MixModes.Synergy.
Resources;component/Resources/
Minimize.png"
Stretch="None" />
</Button>
</DockPanel>
</Border>

<!-- Title bar separator-->
<Border Height="1"
DockPanel.Dock="Top"
Background="{DynamicResource
MainWindowTitleBarSeparator}" />

<!-- Actual Window Content -->
<AdornerDecorator DockPanel.Dock="Bottom">
<ContentPresenter />
</AdornerDecorator>
</DockPanel>
</Border>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource=
{RelativeSource Self}, Path=Maximized}"
Value="False">
<Setter TargetName="MaximizeRestoreImage"
Property="Source"
Value="/MixModes.Synergy.Resources;
component/Resources/Maximize.png" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

استفاده کنید

MMR_1234
چهارشنبه 29 بهمن 1393, 05:44 صبح
با سپاس از لطفت
چیزهائی رو که گفتی حتماً انجام میدم اگه مشکلی بود باز هم مزاحم میشم
متشکرم

MMR_1234
چهارشنبه 29 بهمن 1393, 07:16 صبح
با سلام مجدد
من فایل شما رو ساختم ولی با مشکل روبرو شد که ضمیمه کردم
از راهنمائی شما برای استاندارد کردن فرم ممنونم ولی من میخواستم بدونم اگر بخوا در برنامه خودم برای MousMove و یا هر یک از بخشهای دیگه کد بنویسم چطوری ممکنه
ممنون میشم راهنمائی کنین

MMR_1234
چهارشنبه 29 بهمن 1393, 16:05 عصر
دوستان کسی نظری نداره
ممنون میشم راهنمایی کنید

MMR_1234
شنبه 02 اسفند 1393, 05:44 صبح
کسی از دوستان اطلاعی نداره
ممنون میشم راهنکایی کنید

aslan
شنبه 02 اسفند 1393, 10:29 صبح
سلام
فایل های تصویر را به پروژه اضافه کنید ............... ( فایلهای ذکر شده در ارور در مسیر مربوطه وجود ندارد )

MMR_1234
یک شنبه 03 اسفند 1393, 05:35 صبح
ممنون از پاسختون
فایل رو ضمیمه میکنم
اما مشکل هنوز حل نشده
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟

MMR_1234
سه شنبه 05 اسفند 1393, 05:43 صبح
خبری از راهنمایی جهت رفع مشکل نیست ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

SabaSabouhi
سه شنبه 05 اسفند 1393, 08:47 صبح
خبری از راهنمایی جهت رفع مشکل نیست ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

سلام
اگه تو برنامه از چند تا Assembly استفاده می‌کنی، برنامه نمی‌دونه کجا دنبال عکس بگرده. همیشه سعی کن از
فرمت کامل استفاده کنی.


"pack://application:,,,/MyAssemblyName;component/Images/Menu/MyImage.png"

احتمالاً این روش مشکلت رو حل می‌کنه. بجای MyAssemblyName نام اسمبلی‌ای که تصویر توش هست رو بگذار

صبا صبوحی

MMR_1234
چهارشنبه 06 اسفند 1393, 05:36 صبح
متشکر از راهنمائی
ولی مشکل من اونیه که در اول گفتم
ممنون میشم در مورد اون هم پاسخی بدین

Mori Bone
پنج شنبه 07 اسفند 1393, 11:56 صبح
سلام. این کد استایل رو بده به دکمه های بسه و مینیمایز ویندوت. البت برات پایین تر از استایل مثال گراشتم.

استایل:

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="{Binding Background, ElementName=UserControl}"/>
<Setter Property="BorderBrush" Value="{Binding BorderBrush, ElementName=UserControl}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type Button}">
<Border
x:Name="border"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="true">
<ContentPresenter
x:Name="contentPresenter"
Focusable="False"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger
Property="IsDefaulted"
Value="true">
<Setter
Property="BorderBrush"
TargetName="border"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger
Property="IsMouseOver"
Value="true">
<Setter
Property="Background"
TargetName="border"
Value="{Binding MouseOverBackground, ElementName=UserControl}"/>
</Trigger>
<Trigger
Property="IsPressed"
Value="true">
<Setter
Property="Background"
TargetName="border"
Value="{Binding PressedBackground, ElementName=UserControl}"/>
</Trigger>
<Trigger
Property="IsEnabled"
Value="false">
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>







دکمه کلوز:

<StackPanel
HorizontalAlignment="Right"
Height="50"
VerticalAlignment="Top"
Orientation="Horizontal">
<Button
Style='{StaticResource ButtonStyle}'
x:Name="btnWindowClose"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Height="50"
Width="50">
<Path
Data='M0,0L53.333,0 53.333,8.888 0,8.888z'
Stretch='Uniform'
Fill='#FFFFFFFF'
Width='12'
Margin='0,14,0,0' />
</Button>
<Button
Style='{StaticResource ButtonStyle}'
x:Name="btnWindowMinimize"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Height="50"
Width="50">
<Path
Data='M72.0101,0C90.4433,2E-06,108.882,7.01784,122.949,21.0535L384.892,282.359 646.792,21.0535C674.927,-7.01784 720.547,-7.01784 748.683,21.0535 776.775,49.1265 776.775,94.5986 748.64,122.67L486.74,383.975 748.683,645.324C776.818,673.397 776.775,718.89 748.683,746.962 720.547,775.002 674.927,775.023 646.792,746.962L384.892,485.635 122.949,746.962C94.814,775.023 49.1957,775.002 21.1022,746.962 -7.03405,718.89 -7.03405,673.397 21.1022,645.324L283.001,384.018 21.1022,122.67C-7.03405,94.5986 -7.03405,49.1265 21.1022,21.0535 35.1489,7.01784 53.5769,2E-06 72.0101,0z'
Stretch='Uniform'
Fill='#fff'
Width='12' />
</Button>
</StackPanel>

Mori Bone
پنج شنبه 07 اسفند 1393, 14:58 عصر
اصلا از دکمه ی زیر استفاده کنید. کاره خودمه. ببخشید که خیلی سادس:قلب:128892

MMR_1234
شنبه 09 اسفند 1393, 05:35 صبح
با سپاس از شما
من برنامه تون رو گرفتم ببینم مشکل خودم برای یاد گرفتن حل میشه یا نه
به هر حال از شما متشکرم