2011-12-28 9 views
1

この質問をファイルへのリンクにはどのように私は尋ねた、ここで答えてしまっ1のフォローアップです。しかし、私はどのように各項目の値をファイルパスに設定するのか分からないようです。はComboBoxItemが

目的は、ユーザーがドロップダウンリストからアイテムを選択できるようにすることです。その選択は、DocumentViewerでXPSファイルを開きます。以下のコードは、COMPETENT_TECH(感謝)によって私に提供され、選択されたcomboboxitemの値を読み込み、DocumentViewerに表示します。

私がオープンしたいファイルへのパスは、C:\フォルダ\はあなたの援助のために事前に

Private Sub Button4_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button4.Click 

    Try 
     Dim sFileName As String 

     sFileName = DirectCast(ComboBox1.SelectedValue, String) 
     If Not String.IsNullOrEmpty(sFileName) Then 
      Dim theDocument As New System.Windows.Xps.Packaging.XpsDocument(sFileName, System.IO.FileAccess.Read) 

      DocumentViewer1.Document = theDocument.GetFixedDocumentSequence() 
     End If 
    Catch ex As Exception 
     MessageBox.Show("ERROR: " & ex.Message) 
    End Try 


End Sub 

感謝をfile.xps。ここで更新

は、私が使用しているXAMLです:

<ComboBox Width="Auto" IsReadOnly="True" IsEditable="True" Name="ComboBox1" Height="Auto" Margin="0" Padding="1" Grid.Column="2"> 
    <ComboBoxItem>123456</ComboBoxItem> 
    <ComboBoxItem>123457</ComboBoxItem> 
    <ComboBoxItem>123458</ComboBoxItem> 
</ComboBox> 
+0

に変更されます、あなたは、コンボボックスを移入するために使用XAMLの例を示していることはできますか? –

+0

申し訳ありません、あなたの投稿を見ました。 123456 123457 123458 Grid.Column

+0

[OK]を、あなたがCのような名前を付けたいファイルです:\ folder \ 123456.xpsここで、コンボボックスの値は.xpsのないファイルの名前ですか?あるいは、ファイル名を決定する何か他のものがありますか? –

答えて

1

は、コンボボックスをロードするためのXAMLが指定されている正確にどのように応じて、あなたはおそらく、この行を変更したいと思うでしょう。

Dim theDocument As New System.Windows.Xps.Packaging.XpsDocument(sFileName, System.IO.FileAccess.Read) 

to:

Dim theDocument As New System.Windows.Xps.Packaging.XpsDocument(System.IO.Path.Combine("C:\folder", sFileName & ".xps"), System.IO.FileAccess.Read) 

新しいコードで行っていることは、ファイルが保存されているディレクトリとコンボボックスから取得したファイル名を組み合わせたことだけです。

更新

コンボボックスから値を取得するための正しい方法は次のとおりです。

If ComboBox1.SelectedValue IsNot Nothing Then 
    sFileName = DirectCast(ComboBox1.SelectedValue, ComboBoxItem).Content.ToString() 
End If 
+0

ヘルプ@competent_techにもう一度感謝します。ほんとうにありがとう。 あなたのリクエストに投稿したxamlに基づいて、私が達成しようとしていることを説明しましょう。表示される文書は、VIN#によって識別される車両マニュアルです。したがって、コンボアイテムに表示されている数字は、VINの最後の6桁です。これがファイル名になります。しかし、私はファイル名と一緒にファイル拡張子を置くことを望んでいません - あなたの答えでそれがどのように機能するのでしょうか?私はあなたの答えを得ると思うが、それは私がコンボボックスに完全なファイル名をリストアップしなければならないことを意味するだろうか? –

+0

@KismetAgbasi:ああ、今私は理解する!私はあなたの問題を解決する必要がありますコンボボックスの車両識別子に拡張子を追加する答えを更新しました。 –

+0

あなたが提供したコードを見ていただきありがとうございました - 私はそれの背後に論理を取得し始めています。しかし、私が今取得しているエラーは次のとおりです。 _ 'System.Windows.Controls.ComboBoxItem'型のオブジェクトをキャストして 'System.String'と入力することができません。 これは、VBがcomboboxitemから派生した数値を文字列に変換できないということですか?もしそうなら、どうすればXAML経由でコンボボックスのデータ型を設定できますか? –

0

私は非常にあなたがそのコンボボックスでバインディングデータを使用することを推奨します。

Class XPSDocumentInfo 
{ 
    Public Property Title As String 
    Public Property FileName As String 
} 

ObservableCollection(Of XPSDocumentInfo)を作成し、コンボボックスさんのItemsSourceにバインド:

は、次のようなクラスのものを作成します。

のComboBox

使用DisplayMemberPath="Title"属性には、ドロップダウン内のテキストを表示するためにタイトルプロパティを使用するように、しかし、あなたはのオブジェクトリターンでタイプのコレクションXPSDocumentInfo、そのコンボボックスのSelectedItemプロパティをバインド以来、 XPSDocumentInfoと入力してください。

例えば、

sFileName = DirectCast(ComboBox1.SelectedValue, String) 

sFileName = DirectCast(ComboBox1.SelectedItem, XPSDocumentInfo).FileName 
+0

お寄せいただきありがとうございます。私はVBを使用しているが、私はあなたのコードはC#であると思う。また、私はMSDNサイトのBindingを読んでいますので、この機能を使用してxmlファイルをコンボボックスにバインドする方法をより深く理解することができれば幸いです。とにかくありがとう。 –

関連する問題