Я создаю форму, используя аэростекло в качестве фона, как я описал в "Фон Windows Aero Glass не работает после перехода в спящий режим. Как я могу решить эту проблему? а>". Окно имеет ResizeMode="NoResize" SizeToContent="WidthAndHeight"
набор.
Существует сетка с несколькими фиксированными столбцами и одним переменным столбцом с элементом. Этот элемент должен быть видимым и свернутым. Мое окно должно расширяться и сжиматься само по себе, что отлично работает.
Моя проблема в том, что после изменения размера все элементы управления размываются примерно на 1 пиксель в каждом измерении. После восстановления предыдущего размера путем визуального переключения элементов это размытие исчезает. Я уже узнал, что он появляется каждый раз, когда размер окна программно изменяется. Если пользователь изменит его размер, просто перетащив угол (конечно, без ResizeMode="NoResize"
), элементы управления останутся четкими.
SnapsToDevicePixels="True"
, похоже, не влияет на это поведение.
Если Aero Glass отключен, все работает идеально и остается четким.
Я с нетерпением жду ваших предложений.
Заранее спасибо.
Редактировать:
Пример:
XAML:
<Window x:Class="glass_sample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SampleWindow"
ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
Loaded="Window_Loaded"
Background="{StaticResource {x:Static SystemColors.ActiveCaptionBrushKey}}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Content="Toggle"
Click="Button_Click" />
<Button IsEnabled="False"
Grid.Column="1"
Margin="5"
Content="Expanded"
Visibility="Collapsed"
Name="expand" />
</Grid>
</Window>
CS:
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.expand.Visibility = (this.expand.Visibility == System.Windows.Visibility.Visible) ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
GlassHelper.GlassFrame(this);
// this is my aero-glass class. It extends glass over clientarea and repeats
// this when WM_THEMECHANGED or WM_DWMCOMPOSITIONCHANGED is recieved.
}