0
當前我正在使用WPF應用程序。在一個頁面中,我有兩個部分(例如part1 | Part2)。在部分1中,我列出了項目,當選擇任何項目I將在第2部分中獲得該項目的詳細信息。當我減小窗口頁面的大小時,我希望彈出詳細信息部分。如何實現該功能?請幫忙!在WPF中調整頁面大小時彈出一個彈出窗口
當前我正在使用WPF應用程序。在一個頁面中,我有兩個部分(例如part1 | Part2)。在部分1中,我列出了項目,當選擇任何項目I將在第2部分中獲得該項目的詳細信息。當我減小窗口頁面的大小時,我希望彈出詳細信息部分。如何實現該功能?請幫忙!在WPF中調整頁面大小時彈出一個彈出窗口
簡單,純粹的WPF實行能像這樣工作:
查看:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication2"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid x:Name="PartOne" Grid.Column="0" Background="Red"/>
<Grid x:Name="PartTwoContainer" Grid.Column="1">
<!--PartTwoControl is just UserControl without any special logic in it-->
<local:PartTwoControl x:Name="PartTwo" />
</Grid>
</Grid>
</Window>
而對於它的一些邏輯:
private const int MaxXToPopup = 300;
private Window _popup;
public MainWindow()
{
InitializeComponent();
}
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
{
if (ShouldDisplayInPopup())
{
DetachPartTwo();
OpenPopup();
}
else if (ShouldDisplayInGrid())
{
ClosePopup();
ShowPartTwo();
}
base.OnRenderSizeChanged(sizeInfo);
}
private void ClosePopup()
{
_popup.Content = null;
_popup.Close();
_popup = null;
}
private void OpenPopup()
{
_popup = new Window {Content = PartTwo};
_popup.Show();
}
private void ShowPartTwo()
{
PartTwoContainer.Children.Add(PartTwo);
}
private void DetachPartTwo()
{
PartTwoContainer.Children.Remove(PartTwo);
}
private bool ShouldDisplayInGrid()
{
return _popup != null && RenderSize.Width > MaxXToPopup;
}
private bool ShouldDisplayInPopup()
{
return _popup == null && RenderSize.Width < MaxXToPopup;
}
是否有同時實現這一點,你所遇到的任何具體問題行爲?不起作用的代碼?否則,這種問題格式不符合SO的要求。 – Karolis