我尝试搜索了很多线程,我发现有几个非常接近但不完全是我想要的。经过一天的搜索,我决定问一下。抱歉,如果我错过了什么,我觉得这很常见,但我似乎不太明白。
我有一个绑定到 ViewModel 的 UserControl,它有一个 Listbox,其中 ItemsSource=ObservableCollection 是 ViewModel 的一个属性,如下所示:
每当我选择一个项目时,我都会根据某些条件在其他几个项目上调用 SomeObject.IsEnabled = false 。我想将列表框项绑定到该 IsEnabled 属性,这样每当我进行选择时,我就可以将任何项目变灰。
视图模型:
Class ViewModel : PropertyNotificationObject
{
private ObservableCollection<SomeObject> m_list;
public ObservableCollection<SomeObject> List {get; set;} //notifying properly
private void selectedItem()
{
//several in SomeObjects in List sets IsEnabled = false
}
}
对象类
class SomeObject : PropertyNotificationObject
{
private bool m_isEnabled;
public IsEnabled { get; set; } //notifying properly
}
XAML
<DataTemplate x:Key="ListTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding ., Converter={someConverterObjectToString}}"/>
</Grid>
</DataTemplate>
<ListBox ItemsSource="{Binding List}" ItemTemplate="{StaticResource ListTemplate}"/>
我尝试在 ListBox.ItemContainerStyle 和 DataTemplate 中使用 StyleTriggers,如下所示,但我不知道如何访问 SomeOject.IsEnabled 属性。
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<DataTrigger Binding={???????? I can't get to my SomeObject properties.}
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
抱歉,缺少颜色,我是新来的,不太了解如何很好地使用编辑器。
提前致谢。