我的应用程序的一部分有一个月视图日历界面,但我在选择项目时遇到了问题。界面的设置使得视图中的每一天都包含一个ListBox
项目,很像 Outlook 中的月视图。ListBox
我遇到的问题是我需要在所有es中维护单个项目选择。
下面是一个可以充分描述我的情况的示例。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 属性设置为不在 one 中的项目时,ListBox
将在 that 中删除选择ListBox
,但这不会发生。我知道我可以简单地命名每个 ListBox,并挂钩到 SelectionChanged 事件。我宁愿不必对整个月视图日历进行此操作。必须有更好的方法。
在应用程序的前一次迭代中,我能够创建一个带有用于维护选择的附加属性的 SelectionManager 静态类。但是,我现在不能使用它,因为我用于项目的类不是DependencyObject
s,而且我真的不希望不必创建DependencyObject
包装类,因为这会使我的体系结构相当复杂。
谢谢。
编辑 1: 根据要求添加了视图模型类。