3

MVVM パターンを使用して、WPF でコンボボックスをバインドしています。文字列のリストをコンボボックスにバインドできますが、コンボボックスにデフォルト値を設定する方法がわかりません。さて、「A」、「B」、「C」、「D」を含む名前のリストがあります。ここで、デフォルトで「A」がデフォルト値になるようにしたいと思います。

ありがとう

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ViewModel="clr-namespace:WpfApplication1.ViewModel"
    Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
    <ViewModel:NameViewModel></ViewModel:NameViewModel>
</Window.DataContext>
<Grid>
    <ComboBox Height="23" Width="120" ItemsSource="{Binding Names}"/>
</Grid>

public class NameViewModel
{
   private IList<string> _nameList = new List<string>();
   public IList<string> Names { get; set; }
   public NameViewModel()
   {
       Names = GetAllNames();
   }

   private IList<string> GetAllNames()
   {
       IList<string> names = new List<string>();
       names.Add("A");
       names.Add("B");
       names.Add("C");
       names.Add("D");
       return names;
   }
}
4

2 に答える 2

3

これを実現する最も簡単な方法は、選択したアイテムもバインドすることだと思います...

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ViewModel="clr-namespace:WpfApplication1.ViewModel"
    Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
    <ViewModel:NameViewModel></ViewModel:NameViewModel>
</Window.DataContext>
    <Grid>
        <ComboBox 
           Height="23" 
           Width="120" 
           ItemsSource="{Binding Names}" 
           SelectedItem="{Binding SelectedName}"
           />
    </Grid>
</Window>

public class NameViewModel
{
   private IList<string> _nameList = new List<string>();
   public IList<string> Names { get; set; }
   public string SelectedName { get; set; }
   public NameViewModel()
   {
       Names = GetAllNames();
       SelectedName = "A";
   }

   private IList<string> GetAllNames()
   {
       IList<string> names = new List<string>();
       names.Add("A");
       names.Add("B");
       names.Add("C");
       names.Add("D");
       return names;
   }
}
于 2012-05-21T19:39:15.453 に答える
1

ListItem を使用する必要があると思います。ListItem には Selected プロパティがあります

于 2012-05-21T19:48:46.753 に答える