WPFで作成した画面へのBindingでのデータの入出力を勉強し始めました。
ComboBoxのBindingで分からないことがあります。
やりたいことは、コンボボックスの初期値をSelectedIndexを指定するのではなく、
Value値(DicValue)のBindingで設定したいのと、
選択した結果をTwowayで(DicValue)反映させたいです。
他のサイトで調べたところ、SelectedValueで初期値を設定できる記載があったのですが、
うまく初期値として設定されないのと、選択値変更時、
DicValueに変更後の"key"列が入ると思ったのですが設定されません。
WPF
1<Window x:Class="WpfApp1.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:WpfApp1" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="450" Width="800"> 9 <Grid> 10 11 <StackPanel Height="40" Background="Aqua"> 12 <ComboBox x:Name="cmb1" ItemsSource="{Binding ComboDic,Mode=OneWay}" 13 SelectedValue="{Binding DicValue,Mode=TwoWay}" 14 SelectedValuePath="key" 15 DisplayMemberPath="Value" 16 SelectionChanged="cmb1_Changed" 17 /> 18 </StackPanel> 19 20 </Grid> 21</Window>
C#
1namespace WpfApp1 2{ 3 public partial class MainWindow : Window 4 { 5 /* コンボボックスでバインドテスト*/ 6 public Dictionary<string, string> ComboDic { get; set; } 7 public string DicValue { get; set; } 8 9 10 public string ListSelectedItem { get; set; } 11 12 public MainWindow() 13 { 14 /* DictionaryでBinding */ 15 ComboDic = new Dictionary<string, string>() 16 { 17 {"10","りんご"}, 18 {"20","みかん"}, 19 {"30","ぶどう"}, 20 }; 21 22 InitializeComponent(); 23 24 /* 初期値 みかん */ 25 DicValue = "20"; 26 27 DataContext = this; 28 } 29 30 private void cmb1_Changed(object sender, SelectionChangedEventArgs e) 31 { 32 var item = this.DicValue; 33 } 34 } 35} 36
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/24 10:48
2021/08/24 11:53
2021/08/24 15:31