私は現在Entity
、コレクション プロパティを持つ を持っています。以前に選択した項目を選択しようとするSelectionChanged
と、なぜ一度だけ発火し、再び発火しないのかを知りたいです。SelectionChanged
MainWindowViewModel
public MainWindowViewModel()
{
var a = new List<Test>();
a.Add(new Test() { Name = "Leo", Test1 = new List<Test1> { new Test1() { Content = "aaa"} } });
a.Add(new Test() { Name = "2", Test1 = new List<Test1> { new Test1() { Content = "bbb"} } });
a.Add(new Test() { Name = "Le33o", Test1 = new List<Test1> { new Test1() { Content = "ccc"} } });
A = a;
}
private List<Test> _a;
public List<Test> A
{
get { return _a; }
set { _a = value; OnPropertyChanged("A");}
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
public event PropertyChangedEventHandler PropertyChanged;
私のメインウィンドウ
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainWindowViewModel();
}
private void Test(object sender, SelectionChangedEventArgs e)
{
}
私のリストボックス構造
public class Test
{
public List<Test1> Test1 { get; set; }
public string Name
{
get;set;
}
}
public class Test1
{
public string Content { get; set; }
}
最初のオブジェクトを選択するとイベントが発生し、2 番目のオブジェクトを選択するとイベントが発生し、最初のオブジェクトを選択してもイベントは発生せず、3 番目のオブジェクトを選択するとイベントが発生します。イベントを1回だけトリガーして呼び出すようです。
私のXAML
コード:
<ItemsControl x:Name="Lists" ItemsSource="{Binding A}" Grid.Row="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}" FontWeight="Bold"
Style="{StaticResource DefaultTextBlockStyle}" />
<ListBox SelectionChanged="Test" ItemsSource="{Binding Test1}"
Margin="5,0,0,0" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Content}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
テストメソッドは、変更するたびにブレークポイントにヒットしたいだけの空のメソッドです。
private void Test(object sender, SelectionChangedEventArgs e)
{
}
更新 1 :単純な WPF アプリでこれを再現しようとしました。ListBoxItem が IsEnabled を false に設定しているようですが、スヌープしてすべてのコントロールが有効になっているようです。無効のように見える灰色の背景を取得するだけです。さらに調査を試みます。
更新 2 : 項目を変更したときに ListBoxItem IsSelected プロパティが設定解除されていないようです。