1

私はしばらくの間、この質問に苦労してきました。比較的簡単に思えますが、解決方法がわかりません。これについてあなたの助けをいただければ幸いです。

ファイルパスを表すいくつかの文字列プロパティを持つビューモデルにバインドされたページがあります。

テキスト ボックスとボタンを持つユーザー コントロールを作成しました。コントロールの目的: ボタン (ファイル ダイアログ) をクリックするとダイアログを表示し、結果に従ってテキスト ボックスを更新します。

xaml は次のとおりです。

<UserControl x:Class="MyProject.Controls.FilePickerLauncherControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         x:Name="me"
         d:DesignHeight="300" d:DesignWidth="300">
<DockPanel>
    <Button Content="..." DockPanel.Dock="Right" Command="{Binding OpenFileDialogCommand,ElementName=me}"></Button>
    <TextBox Text="{Binding Path=PathChosen,ElementName=me}" DockPanel.Dock="Right" VerticalAlignment="Center" Height="30"></TextBox>
</DockPanel>

これは私のページのビューモデル(アクション)のコマンドです:

    private void OpenFileExplorer()
    {
        SimpleIoc.Default.GetInstance<IInputOutputService>().OpenFileDialog(modelsDirectory);
    }

ここで、コントロールのすべてのインスタンスに対して、ダイアログの結果を取得し、それをコントロール内のテキスト ボックスに入れたいと考えています。私は考えてきました:

  1. おそらく、この OpenFileExplorer に送信されるコマンド パラメータで、どのプロパティを更新する必要があるかを伝えますが、その方法はわかりません。

  2. プロパティごとにこのコマンドを複数回記述します。これは正しくないと思います。

  3. このコマンドでコントロールの新しいビューモデルを作成し、現在のビュー モデルでそのインスタンスを作成します。

これを行うための最良の方法は何だと思いますか? やや混乱しましたが、比較的単純です。

4

0 に答える 0