PDA

View Full Version : سوال: مشکل خواندن از فایل xaml برای ساخت منو پویا



hercool
چهارشنبه 12 شهریور 1393, 17:56 عصر
سلام دوستان
من میخام برای برنامم منو بسازم و برای اینکار می خوام منو ها را پویا بسازم به این شکل که لیست منو ها با خصوصیتشون رو در یک فایل xaml بنویسم و بعد این فایل را فراخوانی کنم اما مشکل اینجاست که در خوندن این فایل مشکل دارم
برای همین شروع کردم به ساخت یک برنامه ساده تر اون هم اینکه اول از فایلی که به عنوان منبع هست تعدادی گراید رو به صورت درختی بخونم و در یک stackpanel نمایش بدم اما وقتی فایل رو می خونم تنها یک گراید خونده میشه و همه گراید ها رو نمی تونه بخونه
ممنون میشم در این زمینه راهنماییم کنید تا بتونم برسم به ساخت برنامه مشکلتر که همون ساخت منو هست
کدی که در باتن قرار دادم و فایل رو انتخاب می کنم

private void makemenu_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();



// Set filter for file extension and default file extension
dlg.DefaultExt = ".xaml";
// dlg.Filter = "JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif|xml(*.xml)";


// Display OpenFileDialog by calling ShowDialog method
Nullable<bool> result = dlg.ShowDialog();


// Get the selected file name and display in a TextBox
if (result == true)
{
// Open document
url = dlg.FileName;

}

Grid s = new Grid();
baseappwpf.Menu.MenuItem m = new baseappwpf.Menu.MenuItem();
FileStream Fs = new FileStream(url, FileMode.Open);
// m = System.Windows.Markup.XamlReader.Load(Fs) as baseappwpf.Menu.MenuItem;
s = System.Windows.Markup.XamlReader.Load(Fs) as Grid;
mainstackpanel.Children.Add(s);

Fs.Close();
//mvm.Source = new Uri("/Menu/menu.xaml", UriKind.Relative);
}

فایل xaml که حاوی تعداد گراید ها هست که بعدا می خواد جانشینش منو ها بشن
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Background="Black" Width="100" Height="200">
<Grid Background="Cornsilk" Width="100" Height="300"></Grid>

</Grid>

</Grid>
صفحه اصلی که باید گراید ها در اون نمایش داده بشه
<Grid Grid.Row="1">
<StackPanel x:Name="mainstackpanel">

</StackPanel>
</Grid>