Я создаю форму, используя аэро-стекло в качестве фона, как я описал в " Фон 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.
}