アプリの一部に月表示のカレンダー インターフェイスがありますが、アイテムの選択に問題があります。インターフェイスはListBox
、Outlook の月表示と同様に、ビューの各日にアイテムが含まれるように設定されています。私が経験している問題は、すべてのListBox
es で 1 つの項目の選択を維持する必要があることです。
以下は、私の状況を適切に説明するサンプルです。ListBox
両方のesの間で単一の選択を維持する必要があります。
<Window x:Class="StackOverflow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListBox ItemsSource="{Binding Numbers}"
SelectedItem="{Binding SelectedObject"/>
<ListBox Grid.Column="1" ItemsSource="{Binding Dates}"
SelectedItem="{Binding SelectedObject"/>
</Grid>
</Window>
ウィンドウのビュー モデル:
class MainWindowViewModel : DependencyObject
{
public static readonly DependencyProperty SelectedObjectProperty =
DependencyProperty.Register("SelectedObject", typeof(object),
typeof(MainWindowViewModel),
new UIPropertyMetadata(null));
public ObservableCollection<int> Numbers { get; set; }
public ObservableCollection<DateTime> Dates { get; set; }
public object SelectedObject
{
get { return GetValue(SelectedObjectProperty); }
set { SetValue(SelectedObjectProperty, value); }
}
}
このプリミティブな例では、ビュー モデルの SelectedObject プロパティが 1 にないアイテムに設定されるとListBox
、その で選択が削除されると予想されますが、そうはなりListBox
ません。各 ListBox に名前を付けるだけで、SelectionChanged イベントにフックできることを理解しています。月全体のカレンダーでそれを行う必要はありません。もっと良い方法があるはずです。
アプリの以前の反復では、選択を維持するために使用される添付プロパティを使用して、SelectionManager 静的クラスを作成できました。ただし、アイテムに使用しているクラスは s ではないため、これを使用することはできません。アーキテクチャがかなり複雑になるため、ラッパー クラスDependencyObject
を作成する必要はありません。DependencyObject
ありがとう。
編集 1: 要求に応じてビュー モデル クラスを追加しました。