我有一個WPF項目,它只是幾十個小工具的集合。我把每個工具放在主選項卡控件的tabitem上,併爲每個tabitem寫了一個部分的MainWinow類。但是,由於這些工具之間的關係很少,我寧願密封每個工具,以免它們互相干擾。此外,我聽說部分階級是邪惡的。這裏的問題是除了MainWindow之外的其他類很難與UI項目交流(根據我的知識)。我應該去哪裏的任何建議?什麼是更好的方法來與標籤項目溝通比部分類
非常感謝。
根據Blam的要求,這裏是我當前代碼的簡化版本。原始代碼太大而無法粘貼。
XAML:
<Window x:Class="WpfApplication7.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TabControl Margin="0,0,0,0" Name="tabControl1">
<TabItem Header="Tool1" Name="Tool1">
<Grid>
<Label Name="lblTool1"/>
</Grid>
</TabItem>
<TabItem Header="Tool2" Name="Tool2">
<Grid>
<Label Name="lblTool2"/>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Window>
偏類1(MainWindow.xaml.cs):
namespace WpfApplication7
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
string caption = "Tool Collection";
public MainWindow()
{
InitializeComponent();
this.Title = caption;
InitialTool1();
InitialTool2();
}
/*
Some other methods for main window, including those for menu bar, tool bar, ...
*/
}
}
偏類2(Tool1.cs):
namespace WpfApplication7
{
string tool1Details = "This is tool 1";
/*
Other parameters related to tool1
*/
public partial class MainWindow : Window
{
public void InitialTool1()
{
lblTool1.Content = tool1Details;
}
/*
Some other methods that communicate with tabitem1
*/
}
}
部分3類(Tool2.cs):
namespace WpfApplication7
{
public partial class MainWindow : Window
{
string tool2Detail = "This is tool 2";
/*
Other parameters related to tool2
*/
public void InitialTool2()
{
lblTool2.Content = tool2Detail;
}
/*
Some other methods that communicate with tabitem2
*/
}
}
將它們分成部分類的目的是我們可以將它們放在不同的文件中。
我肯定不遵循你可以發佈一些代碼? – Paparazzi
有沒有辦法讓一個班級認爲一個tabitem就是這個世界,並讓它表現得像那個單個tabitem對應的MainWindow? – Bob
我會考慮讓每個工具都是自己的用戶控件。 – mdm20