我在我的主窗框,其被設置爲可見/摺疊基於用戶輸入:如何訪問框架的子元素?
<Grid>
<ScrollViewer x:Name="ScrollViewer1" Grid.Row="1" Grid.ColumnSpan="3" Margin="10,0,0,0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Frame Name="InputsFrame" Source="Inputs.xaml" NavigationUIVisibility="Hidden" Visibility="Visible"
ScrollViewer.CanContentScroll="True" />
</ScrollViewer>
<ScrollViewer x:Name="ScrollViewer2" Grid.Row="1" Grid.ColumnSpan="3" Margin="10,0,0,0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Visibility="Collapsed">
<Frame Name="LoadCasesFrame" Source="LoadCases.xaml" NavigationUIVisibility="Hidden" Visibility="Collapsed"
ScrollViewer.CanContentScroll="True" />
</ScrollViewer>
<!-- etc -->
</Grid>
的Inputs.xaml幀基本上只是由一個第三方DoubleTextBox控制的(在他們的100),和用戶可以輸入該頁面的值。後面的C#代碼:
private void InputsTab_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
LoadCasesFrame.Visibility = Visibility.Collapsed;
ScrollViewer2.Visibility = Visibility.Collapsed;
InputsFrame.Visibility = Visibility.Visible;
ScrollViewer1.Visibility = Visibility.Visible;
}
在這個主窗口中,在頂部有一個菜單允許保存和打開文件。當我打開文件時,我想要讀取數據(我可以成功完成)以及Inputs.xaml文件中的UI以進行更新。
下面的代碼是在Inputs.xaml.cs:
public void LoadValues()
{
List<DoubleTextBox> dtb1 = App.GetLogicalChildCollection<DoubleTextBox>(inputsGrid);
for (int i = 0; i < dtb1.Count; i++)
{
foreach (var keyValuePair in App.globalDictionary)
{
var doubleTextBox = dtb1[i] as DoubleTextBox;
if (doubleTextBox.Name == keyValuePair.Key)
{
doubleTextBox.Value = 500;
break;
}
}
}
}
此功能(所有的GUI更新到500的值),當我把它從Inputs.xml.cs頁面(例如,當我把它放在Page_Loaded
事件中)。但是,我需要從MainWindow
調用這個函數,因爲這是爲打開文件事件的事件處理程序位於:
private void openProject_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == true)
{
string stringToDeserialize = File.ReadAllText(openFileDialog.FileName);
App.DeserializeJSONString(stringToDeserialize);
}
// call LoadValues here
}
以上調用LoadValues()
不更新的Input.xaml頁的GUI。我本來在我的MainWindow
是這樣的:
Inputs _inputs = new Inputs();
_inputs.LoadValues();
我知道,問題是,我創建了一個新的對象Inputs
那可能是爲什麼它不工作。我不確定如何去做,所以我不使用新的對象 - 不知道我是否可以使用InputsFrame
。我也嘗試過使用事件處理程序來取得成功。
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
爲了將來的參考,請嘗試將問題描述限制爲只理解問題所需的基本要素,並確保問題標題準確地描述了手邊的_primary_問題(而不是像您嘗試的某種特定的解決方法策略) 。在上文中,我相信有關文件開放的討論是不相關的;它只是模糊了被問到的主要問題。 –
JohnSaunders&@PeterDuniho:感謝您的評論和編輯。我試圖儘可能清楚和簡單。我將銘記未來的問題。 – greentea