好了,所以這可能是一個非常非常愚蠢的問題,基本上,我試圖做我的項目是動態地添加所有的用戶控件的一個List<UserControl>
搜索用戶控件和引用它們爲對象
所以在我的IDE說我創建第2個view1.xaml和view2.xaml用戶控件,並命名方法內部GetAllViews()我想看看以單詞在我的項目的任何文件查看(或更好的還包含查看* .xaml)並添加它們到List<UserControl>
。
public List<UserControl> viewList = new List<UserControl>();
public void GetAllViews()
{
view1 v1 = new view1();
view2 v2 = new view2();
viewList.Add(v1);
viewList.Add(v2);
}
所以我基本上要避免創建用戶控制的巨大可見名單和實例化它們,然後一個接一個,當我可以只循環並把它們添加到列表,實例化它們從發現的控制則將它們添加到列表中,是否有意義?
也許我在想這個錯誤的方式,在這種情況下,有什麼建議?
UPDATE: 添加更多的代碼爲更好的背景下...
在我MainWindow.xaml.cs我打電話GetAllViews()方法來填充列表
#region MEMBER VARIABLES
UtilityFactory uf = new UtilityFactory();
int _currentView = 0;
int _previousView = 0;
#endregion
#region PROPERTIES
List<UserControl> ViewList
{
get
{
return uf.viewList;
}
}
#endregion
public MainWindow()
{
InitializeComponent();
softRendering();
uf.GetAllViews();
pageTransition.ShowPage(ViewList[_currentView]);
}
然後在btnNext_Click
private void btnNext_Click(object sender, RoutedEventArgs e)
{
if (_currentView < ViewList.Count - 1)
{
_previousView = _currentView;
_currentView += 1;
pageTransition.ShowPage(ViewList[_currentView]);
}
}
而基本上反對伊特爲btnBack_click
private void btnBack_Click(object sender, RoutedEventArgs e)
{
if (_currentView != 0)
{
_currentView = _previousView;
_previousView += 1;
pageTransition.ShowPageFromLeft(ViewList[_currentView]);
}
}
所以基本上這就是我希望做的:
public void GetAllViews2()
{
foreach (var uControls in uControlList)
{
uControls newControl = uControls();
viewList.Add(newControl);
}
}
UserControl不過是一個類。爲什麼要將UserControls的實例添加到列表中?你如何使用這個列表進行indending?運行時沒有XAML「文件」的概念。你的XAML文件被編譯成資源。 – mm8
沒錯,但是我怎麼能從我找到的文件(類)列表中創建一個對象(類對象)?我正在使用該列表在窗口中的頁面之間切換。因此,如果用戶點擊「下一步」按鈕,我可以引用列表的索引以進入下一頁,或反之亦然「後退」按鈕。從我可以告訴我,如果我希望它是動態的,我需要有指數來實現這一點。 – ganjeii
您無法將用戶控件添加到列表中,而無需首先實例化UC,因此我不確定是否瞭解您在此嘗試執行的目的。 – mm8