C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

XAMLを読み込みWindowを表示したい


(過去ログ 87 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■51815 / inTopicNo.1)  XAMLを読み込みWindowを表示したい
  
□投稿者/ KEN (1回)-(2010/07/21(Wed) 11:08:24)

分類:[VB.NET/VB2005 以降] 

お世話になります。
【環境】
WinXPsp3+VB2008

【やりたいこと】
(1) Wpfアプリケーションで、Windowの今の状態をXAMLで保存する
(2) 保存したXAMLを読み込み、新規Windowとして表示する。

【発生するエラー】
以下の(2)のコードの Dim w As Window = Markup.XamlReader.Load(xr) のところで以下のエラーがでます。

'BtnSave' 値をオブジェクト 'System.Windows.Controls.Button' のプロパティ 'Name' に割り当てることはできません。
このスコープでは、重複した Name 'BtnSave' を登録できません。
マークアップ ファイル 'C:/Documents and Settings/user/デスクトップ/hoge.xaml' 
行 1 位置 219 のオブジェクト 'BtnSave' にエラーがあります。


どのようにコーディングすればよいのでしょうか?
よろしくお願い致します。



【やってみたこと】
(1)のコード
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnsave.Click
        Dim dlg As New Microsoft.Win32.SaveFileDialog
        If dlg.ShowDialog Then
            Dim saveXAML As String
            saveXAML = Markup.XamlWriter.Save(Me)

            Dim sw As New System.IO.StreamWriter(dlg.FileName, False, System.Text.Encoding.GetEncoding("UTF-8"))
            sw.Write(saveXAML)
            sw.Close()
        End If
    End Sub

(2)のコード
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnLoad.Click
        Dim dlg As New Microsoft.Win32.OpenFileDialog
        If dlg.ShowDialog Then
            Dim sr As New System.IO.StreamReader(dlg.FileName, System.Text.Encoding.GetEncoding("UTF-8"))
            Dim readXaml As String = sr.ReadToEnd
            sr.Close()

            Dim s As New IO.StringReader(readXaml)
            Dim xr As Xml.XmlReader = Xml.XmlReader.Create(dlg.FileName)
            Dim w As Window = Markup.XamlReader.Load(xr)
            w.Show()
        End If
    End Sub

【読み込もうとしたXAML】
<Window2 Title="Window2" Width="300" Height="300" Visibility="Visible"
 xmlns="clr-namespace:WpfApplication1;assembly=XamlReader"
 xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<av:Grid>
<av:Button Name="BtnSave" Width="75" Height="23" Margin="34,51,0,0" HorizontalAlignment="Left" VerticalAlignment="Top">Save</av:Button>
<av:TextBox Name="TextBox1" Height="23" Margin="22,103,136,0" VerticalAlignment="Top">hoge</av:TextBox>
<av:Button Name="btnLoad" Width="75" Height="23" Margin="0,51,35,0" HorizontalAlignment="Right" VerticalAlignment="Top">Load</av:Button>
</av:Grid>
</Window2>

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -