私はしばらくの間、この質問に苦労してきました。比較的簡単に思えますが、解決方法がわかりません。これについてあなたの助けをいただければ幸いです。
ファイルパスを表すいくつかの文字列プロパティを持つビューモデルにバインドされたページがあります。
テキスト ボックスとボタンを持つユーザー コントロールを作成しました。コントロールの目的: ボタン (ファイル ダイアログ) をクリックするとダイアログを表示し、結果に従ってテキスト ボックスを更新します。
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);
}
ここで、コントロールのすべてのインスタンスに対して、ダイアログの結果を取得し、それをコントロール内のテキスト ボックスに入れたいと考えています。私は考えてきました:
おそらく、この OpenFileExplorer に送信されるコマンド パラメータで、どのプロパティを更新する必要があるかを伝えますが、その方法はわかりません。
プロパティごとにこのコマンドを複数回記述します。これは正しくないと思います。
このコマンドでコントロールの新しいビューモデルを作成し、現在のビュー モデルでそのインスタンスを作成します。
これを行うための最良の方法は何だと思いますか? やや混乱しましたが、比較的単純です。