باعرض سلام و خسته نباشید خدمت استاد فاری و تبریک سال نو.
می خواستم این رنگ title bar که عوض کنم تو سایت خود MahApps تو بخش styleهاش یه سری رنگ آماده داشت اما چطوری رنگ های custom خودمون رو اضافه کنیم هرکاری کردم نشد.
با سلام خدمت شما دوست عزیز
ممنون انشاالله سالی پربار و پر از موفقیت و شادی داشته باشید :)
برای اضافه کردن رنگ به صورت custom به برنامه باید به شکل زیر عمل کنید :
1 : شما باید یک فایل در آدرس مورد نظر در برنامه از نوع ResourseDictionary بسازید . من نمونه رو براتون میزارم فقط کافیه رنگ مورد نظرتون رو در این نمونه جایگزین کنید و سعی کنید تمام موارد رو با رنگ متناسب پرکنید چون هر کدام برای عنصری خاص رنگ مشخص میکنند
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:options="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
mc:Ignorable="options">
<Color x:Key="HighlightColor">#FF9F0055</Color>
<Color x:Key="AccentBaseColor">#FFD80073</Color>
<!-- 80% -->
<Color x:Key="AccentColor">#CCD80073</Color>
<!-- 60% -->
<Color x:Key="AccentColor2">#99D80073</Color>
<!-- 40% -->
<Color x:Key="AccentColor3">#66D80073</Color>
<!-- 20% -->
<Color x:Key="AccentColor4">#33D80073</Color>
<!-- re-set brushes too -->
<SolidColorBrush x:Key="HighlightBrush"
Color="{StaticResource HighlightColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="AccentBaseColorBrush"
Color="{StaticResource AccentBaseColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="AccentColorBrush"
Color="{StaticResource AccentColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="AccentColorBrush2"
Color="{StaticResource AccentColor2}"
options:Freeze="True" />
<SolidColorBrush x:Key="AccentColorBrush3"
Color="{StaticResource AccentColor3}"
options:Freeze="True" />
<SolidColorBrush x:Key="AccentColorBrush4"
Color="{StaticResource AccentColor4}"
options:Freeze="True" />
<SolidColorBrush x:Key="WindowTitleColorBrush"
Color="{StaticResource AccentColor}"
options:Freeze="True" />
<LinearGradientBrush x:Key="ProgressBrush"
StartPoint="1.002,0.5"
EndPoint="0.001,0.5"
options:Freeze="True">
<GradientStop Offset="0"
Color="{StaticResource HighlightColor}" />
<GradientStop Offset="1"
Color="{StaticResource AccentColor3}" />
</LinearGradientBrush>
<SolidColorBrush x:Key="CheckmarkFill"
Color="{StaticResource AccentColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="RightArrowFill"
Color="{StaticResource AccentColor}"
options:Freeze="True" />
<Color x:Key="IdealForegroundColor">White</Color>
<SolidColorBrush x:Key="IdealForegroundColorBrush"
Color="{StaticResource IdealForegroundColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="IdealForegroundDisabledBrush"
Opacity="0.4"
Color="{StaticResource IdealForegroundColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="AccentSelectedColorBrush"
Color="{StaticResource IdealForegroundColor}"
options:Freeze="True" />
<!-- DataGrid brushes -->
<SolidColorBrush x:Key="MetroDataGrid.HighlightBrush"
Color="{StaticResource AccentColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="MetroDataGrid.HighlightTextBrush"
Color="{StaticResource IdealForegroundColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="MetroDataGrid.MouseOverHighlightBrush"
Color="{StaticResource AccentColor3}"
options:Freeze="True" />
<SolidColorBrush x:Key="MetroDataGrid.FocusBorderBrush"
Color="{StaticResource AccentColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="MetroDataGrid.InactiveSelectionHighlightBrush"
Color="{StaticResource AccentColor2}"
options:Freeze="True" />
<SolidColorBrush x:Key="MetroDataGrid.InactiveSelectionHighlightTextBrush"
Color="{StaticResource IdealForegroundColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.OnSwitchBrush.Win10"
Color="{StaticResource AccentColor}"
options:Freeze="True" />
<SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.OnSwitchMouseOverBrush.Win10"
Color="{StaticResource AccentColor2}"
options:Freeze="True" />
<SolidColorBrush x:Key="MahApps.Metro.Brushes.ToggleSwitchButton.ThumbIndicatorCheckedBrush.Win10"
Color="{StaticResource IdealForegroundColor}"
options:Freeze="True" />
</ResourceDictionary>
2 : حالا برید در فایل App.xaml.cs و تکه کد زیر را قرار دهید :
//در اینجا فایل مورد نظر در روت پروژه هست که باید آدرس درست رو جایگزین کنید
//و بعد نامی برای آن مشخص میکنید تا در چند خط آینده بتونیم اونو بگیریم
ThemeManager.AddAccent("CustomAccent1", new Uri("pack://application:,,,/Dictionary1.xaml"));
//اینجا تم جاری رو از برنامه میگیرید تا بتونید تیره یا روشن بودن خود تم رو تشخیص بدید تا در متد //بعدی جایگزن کنید
Tuple<AppTheme, Accent> appStyle = ThemeManager.DetectAppStyle(Application.Current);
// دراینجا تم مورد نظر (تیره یا روشن بودن)و رنگ مورد نظرتون رو تنظیم میکنید
ThemeManager.ChangeAppStyle(Application.Current,
ThemeManager.GetAccent("CustomAccent1"),
appStyle.Item1);
حالا شما تونستید رنگ ها رو بدرستی تغییر دهید
شما با این روش میتونید به صورت داینامیک هم رنگ برنامه رو تغییر بدید (مثلا در event ها )
- در آخر در صورت تمایل ممنون میشم نظرتون و یا پیشنهاد یا انتقادتون تا این جای کار رو در مورد آموزش در قسمت نظرات مطرح کنید
خیلی ممنون از راهنمایی تون