2010-12-12 15 views
9

ラジオボタンのリストを含む私のプログラムにItemsControlがあります。私はMVVMの方法でグループInsertionsで選択したラジオボタンを見つけるにはどうすればよいグループ内の選択したラジオボタンを取得する(WPF)

<ItemsControl ItemsSource="{Binding Insertions}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <RadioButton GroupName="Insertions"/> 
       </Grid> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

インターネットで見つかったほとんどの例では、コンバータの助けを借りてIsCheckedプロパティをバインドする個々のブール値プロパティを設定しています。

私が結合できるListBoxSelectedItemの同等物はありますか?

答えて

9

あなたの挿入エンティティにIsCheckedブール値プロパティを追加し、それをラジオボタンの 'IsChecked'プロパティにバインドすることをお勧めします。このようにして、View Modelの[Checked]ラジオボタンをチェックすることができます。

ここはすばやく汚れた例です。

NB:私にisCheckedもnullすることができ、必要であれば、あなたはbool?を使用していることを扱うことができるという事実を無視しました。

using System; 
using System.Collections.Generic; 
using System.Collections.ObjectModel; 

namespace WpfRadioButtonListControlTest 
{ 
    class MainViewModel 
    { 
    public ObservableCollection<Insertion> Insertions { get; set; } 

    public MainViewModel() 
    { 
     Insertions = new ObservableCollection<Insertion>(); 
     Insertions.Add(new Insertion() { Text = "Item 1" }); 
     Insertions.Add(new Insertion() { Text = "Item 2", IsChecked=true }); 
     Insertions.Add(new Insertion() { Text = "Item 3" }); 
     Insertions.Add(new Insertion() { Text = "Item 4" }); 
    } 
    } 

    class Insertion 
    { 
    public string Text { get; set; } 
    public bool IsChecked { get; set; } 
    } 
} 

XAML単純なビューモデル - それが生成されたコード以外以外のコードを有していないので、後ろのコードが示されていません。

<Window x:Class="WpfRadioButtonListControlTest.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfRadioButtonListControlTest" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
    <local:MainViewModel x:Key="ViewModel" /> 
    </Window.Resources> 
    <Grid DataContext="{StaticResource ViewModel}"> 
    <ItemsControl ItemsSource="{Binding Insertions}"> 
     <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
      <RadioButton GroupName="Insertions" 
         Content="{Binding Text}" 
         IsChecked="{Binding IsChecked, Mode=TwoWay}"/> 
      </Grid> 
     </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
    </Grid> 
</Window> 
関連する問題