私は2つのチェックボックスを持つ小さなプログラムを持っています。WPFでウィンドウサイズを大きくするときの黒いバー
ウィンドウの高さは120です。ウィンドウの高さを確認すると、ウィンドウの高さは180に増加します。両方をチェックすると220になります。チェックを外すと、1つのチェックボックスで180に、チェックされます。
私はそれを平滑にします。つまり、私はwindowHeightOldとwindowHeightNewの差を計算し、それを30で割って30の小さなステップで増加させて滑らかに見えるようにします。
問題は、小さなウィンドウサイズの減少が大きく見えることです。増加すると、数ミリ秒間黒いバーが増加し、再び消滅する領域が増えます。残念ながら私はスクリーンショットを作ることができませんでした。
どこから来たのか、それを修正する方法はわかりません。ここで
ウィンドウの高さの増加/ decraseから切り取らコード:
private void CheckBoxSetup_Click(object sender, RoutedEventArgs e)
{
if (CheckBoxSetup.IsChecked == false && CheckBoxUpdate.IsChecked == false)
{
MainWindow1.MinHeight = 50;
OldWindowHeight = MainWindow1.Height;
int NewWindowHeigth = 180;
WindowDiff = NewWindowHeigth - OldWindowHeight;
WindowDiff = WindowDiff/30;
for (int a = 0; a < 30; a++)
{
OldWindowHeight = OldWindowHeight + WindowDiff;
MainWindow1.Height = OldWindowHeight;
MainWindow1.MinHeight = OldWindowHeight;
}
}
if (CheckBoxSetup.IsChecked == true || CheckBoxUpdate.IsChecked == true)
{
MainWindow1.MinHeight = 50;
OldWindowHeight = MainWindow1.Height;
int NewWindowHeigth = 220;
WindowDiff = NewWindowHeigth - OldWindowHeight;
WindowDiff = WindowDiff/30;
for (int a = 0; a < 30; a++)
{
OldWindowHeight = OldWindowHeight + WindowDiff;
MainWindow1.Height = OldWindowHeight;
MainWindow1.MinHeight = OldWindowHeight;
}
//MainWindow1.MinHeight = 220;
}
if (CheckBoxSetup.IsChecked == true && CheckBoxUpdate.IsChecked == true)
{
MainWindow1.MinHeight = 50;
OldWindowHeight = MainWindow1.Height;
int NewWindowHeigth = 260;
WindowDiff = NewWindowHeigth - OldWindowHeight;
WindowDiff = WindowDiff/30;
for (int a = 0; a < 30; a++)
{
OldWindowHeight = OldWindowHeight + WindowDiff;
MainWindow1.Height = OldWindowHeight;
MainWindow1.MinHeight = OldWindowHeight;
}
//MainWindow1.MinHeight = 260;
}
if (CheckBoxSetup.IsChecked == true)
{
LabelDestinationSetup.Visibility = Visibility.Visible;
TextBoxDestinationpathSetup.Visibility = Visibility.Visible;
CheckCountSetup++;
}
else
{
LabelDestinationSetup.Visibility = Visibility.Hidden;
TextBoxDestinationpathSetup.Visibility = Visibility.Hidden;
CheckCountSetup--;
}
if (CheckCountSetup == 1)
{
LabelDestinationSetup.Margin = new Thickness(24, thickTop1, 0, 0);
TextBoxDestinationpathSetup.Margin = new Thickness(160, thickTop1, 0, 0);
LabelDestinationUpdatepackage.Margin = new Thickness(24, thickTop2, 0, 0);
TextBoxDestinationpathUpdatePackage.Margin = new Thickness(160, thickTop2, 0, 0);
}
if (CheckCountSetup == 0 && CheckCountUpdate == 1)
{
LabelDestinationSetup.Margin = new Thickness(24, thickTop2, 0, 0);
TextBoxDestinationpathSetup.Margin = new Thickness(160, thickTop2, 0, 0);
LabelDestinationUpdatepackage.Margin = new Thickness(24, thickTop1, 0, 0);
TextBoxDestinationpathUpdatePackage.Margin = new Thickness(160, thickTop1, 0, 0);
}
if (CheckCountSetup == 0)
{
LabelDestinationSetup.Margin = new Thickness(24, thickTop2, 0, 0);
TextBoxDestinationpathSetup.Margin = new Thickness(160, thickTop2, 0, 0);
LabelDestinationUpdatepackage.Margin = new Thickness(24, thickTop1, 0, 0);
TextBoxDestinationpathUpdatePackage.Margin = new Thickness(160, thickTop1, 0, 0);
}
}
private void CheckBoxUpdate_Click(object sender, RoutedEventArgs e)
{
if(CheckBoxUpdate.IsChecked == true && CheckBoxFTP.IsChecked == false){
CheckBox64Bit.IsEnabled = true;
}else if(CheckBoxUpdate.IsChecked == false){
CheckBox64Bit.IsEnabled = false;
CheckBox64Bit.IsChecked = false;
}
if (CheckBoxSetup.IsChecked == false && CheckBoxUpdate.IsChecked == false)
{
MainWindow1.MinHeight = 50;
OldWindowHeight = MainWindow1.Height;
int NewWindowHeigth = 180;
WindowDiff = NewWindowHeigth - OldWindowHeight;
WindowDiff = WindowDiff/30;
for (int a = 0; a < 30; a++)
{
OldWindowHeight = OldWindowHeight + WindowDiff;
MainWindow1.Height = OldWindowHeight;
MainWindow1.MinHeight = OldWindowHeight;
}
//MainWindow1.MinHeight = 180;
}
if (CheckBoxSetup.IsChecked == true || CheckBoxUpdate.IsChecked == true)
{
MainWindow1.MinHeight = 50;
OldWindowHeight = MainWindow1.Height;
int NewWindowHeigth = 220;
WindowDiff = NewWindowHeigth - OldWindowHeight;
WindowDiff = WindowDiff/30;
for (int a = 0; a < 30; a++)
{
OldWindowHeight = OldWindowHeight + WindowDiff;
MainWindow1.Height = OldWindowHeight;
MainWindow1.MinHeight = OldWindowHeight;
}
//MainWindow1.MinHeight = 220;
}
if (CheckBoxSetup.IsChecked == true && CheckBoxUpdate.IsChecked == true)
{
MainWindow1.MinHeight = 50;
OldWindowHeight = MainWindow1.Height;
int NewWindowHeigth = 260;
WindowDiff = NewWindowHeigth - OldWindowHeight;
WindowDiff = WindowDiff/30;
for (int a = 0; a < 30; a++)
{
OldWindowHeight = OldWindowHeight + WindowDiff;
MainWindow1.Height = OldWindowHeight;
MainWindow1.MinHeight = OldWindowHeight;
}
//MainWindow1.MinHeight = 260;
}
if (CheckBoxUpdate.IsChecked == true)
{
LabelDestinationUpdatepackage.Visibility = Visibility.Visible;
TextBoxDestinationpathUpdatePackage.Visibility = Visibility.Visible;
CheckCountUpdate++;
}
else
{
LabelDestinationUpdatepackage.Visibility = Visibility.Hidden;
TextBoxDestinationpathUpdatePackage.Visibility = Visibility.Hidden;
CheckCountUpdate--;
}
if (CheckCountUpdate == 1)
{
LabelDestinationUpdatepackage.Margin = new Thickness(24, thickTop1, 0, 0);
TextBoxDestinationpathUpdatePackage.Margin = new Thickness(160, thickTop1, 0, 0);
LabelDestinationSetup.Margin = new Thickness(24, thickTop2, 0, 0);
TextBoxDestinationpathSetup.Margin = new Thickness(160, thickTop2, 0, 0);
}
if (CheckCountSetup == 1 && CheckCountUpdate == 0)
{
LabelDestinationUpdatepackage.Margin = new Thickness(24, thickTop2, 0, 0);
TextBoxDestinationpathUpdatePackage.Margin = new Thickness(160, thickTop2, 0, 0);
LabelDestinationSetup.Margin = new Thickness(24, thickTop1, 0, 0);
TextBoxDestinationpathSetup.Margin = new Thickness(160, thickTop1, 0, 0);
}
if (CheckCountUpdate == 0)
{
LabelDestinationUpdatepackage.Margin = new Thickness(24, thickTop2, 0, 0);
TextBoxDestinationpathUpdatePackage.Margin = new Thickness(181, thickTop2, 0, 0);
LabelDestinationSetup.Margin = new Thickness(24, thickTop1, 0, 0);
TextBoxDestinationpathSetup.Margin = new Thickness(160, thickTop1, 0, 0);
}
}
コードの長い行のために申し訳ありませんが、私は、洞察力を持っているnessecaryであると考えられています。
基本的に、これらの2つが異なる組み合わせでチェックされているかどうかをチェックします。それに応じてウィンドウの高さを増減します。チェックボックスがオンになっていると、チェックボックスに応じて表示または非表示に設定されているテキストボックスが表示されます。
基本的に2つの方法(チェックボックス1をクリックしてチェックボックス2をクリック)とその両方が同じように構築されます。クリックするとコンビネーションがチェックされ、それに応じてウィンドウの高さが設定され、それに応じたテキストボックスが表示または設定されます。
1チェックボックスにチェック:
0チェックボックスをチェックし
2つのチェックボックスがチェック:
https://stackoverflow.com/questions/19554073/use-animation-to-change-window-size-in-wpfアニメーションを使用します、もっと簡単かもしれない –