【发布时间】:2017-02-14 01:34:17
【问题描述】:
我对 WPF 和发现 XAML 比较陌生。
我在 XAML 中有一个 ListBox Name="EmployeeTitles"(如下所示)。为了演示问题DataContext = employees,即ObservableCollection<Employee>。
<ListBox Name="EmployeeTitles"
ItemsSource="{Binding}"
SelectionMode="Extended">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ToggleButton IsChecked="{Binding IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}">
<!--StackPanel will have more items-->
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}"/>
</StackPanel>
</ToggleButton>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我的“代码隐藏”类 sn-p 如下所示:
private string _title;
public string Title
{
get { return _title; }
set
{
_title = value;
OnPropertyChanged();
}
}
private bool _isSelected;
public bool IsSelected
{
get
{
return _isSelected;
}
set
{
_isSelected = value;
OnPropertyChanged();
}
}
我想在不同的控件中显示所选项目。例如,有一个仅显示选定项目的列表。我可以在 XAML 中以某种方式标记我只想显示带有IsChecked="True" 的项目吗?我知道我可以有另一个 ObservableCollection 只存储选定的项目并在属性IsSelected 更改时在“代码隐藏”中更新它,但这似乎是一种开销,我想应该有一种方法可以在 XAML 中做到这一点?
【问题讨论】:
标签: c# wpf xaml binding listbox