سؤال
لدي تطبيق WPF Windows. أحتاج إلى تغيير لون خلفية شريط العنوان. كيف أقوم بذلك؟
المحلول
في WPF، يعد TitleBar جزءا من منطقة غير عميل، والتي لا يمكن تعديلها من خلال فئة Window WPF. تحتاج إلى التعامل مع مقابض Win32 (إذا كنت أتذكر بشكل صحيح).
هذه المقالة قد تكون مفيدة لك: نافذة مخصصة كروم في WPF.
نصائح أخرى
إليك مثال على كيفية تحقيق هذا:
<Grid DockPanel.Dock="Right"
HorizontalAlignment="Right">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right"
VerticalAlignment="Center">
<Button x:Name="MinimizeButton"
KeyboardNavigation.IsTabStop="False"
Click="MinimizeWindow"
Style="{StaticResource MinimizeButton}"
Template="{StaticResource MinimizeButtonControlTemplate}" />
<Button x:Name="MaximizeButton"
KeyboardNavigation.IsTabStop="False"
Click="MaximizeClick"
Style="{DynamicResource MaximizeButton}"
Template="{DynamicResource MaximizeButtonControlTemplate}" />
<Button x:Name="CloseButton"
KeyboardNavigation.IsTabStop="False"
Command="{Binding ApplicationCommands.Close}"
Style="{DynamicResource CloseButton}"
Template="{DynamicResource CloseButtonControlTemplate}"/>
</StackPanel>
</Grid>
</DockPanel>
التعامل مع الأحداث انقر في الكود الخلف.
ل mousedown -
App.Current.MainWindow.DragMove();
لتقليل زر -
App.Current.MainWindow.WindowState = WindowState.Minimized;
ل doubleclick و maximizeclick
if (App.Current.MainWindow.WindowState == WindowState.Maximized)
{
App.Current.MainWindow.WindowState = WindowState.Normal;
}
else if (App.Current.MainWindow.WindowState == WindowState.Normal)
{
App.Current.MainWindow.WindowState = WindowState.Maximized;
}
آمل أن يساعد هذا.
يمكنك أيضا إنشاء نافذة بلا حدود، وجعل الحدود وشريط العنوان بنفسك
تحقق من العينة التالية WPF تخصيص مظهر نافذة في XAML
توضح هذه العينة كيفية تخصيص نمط / ظهور النافذة بشكل كامل، بما في ذلك المناطق غير العميلة: شريط العنوان والحدود والأزرار الأقصى والحد الأقصى والأزرار المحددة أثناء توفير جميع الوظائف المتوقعة.