我尝试搜索了很多帖子,发现有几个与我想要的相似但并不完全符合。经过一天的搜索,我决定提问。如果我漏掉了什么,请谅解,我感觉这应该是足够常见的,但我似乎无法完全理解它。
我有一个绑定到ViewModel的UserControl,并且它有一个ListBox,ItemsSource=ObservableCollection是ViewModel的一个属性,就像下面所示:
每当我选择一个项目,我根据某些条件在其他几个项目上调用SomeObject.IsEnabled = false。我想将列表框项绑定到该IsEnabled属性,以便我可以在进行选择时使任何项目变灰。
ViewModel:
我已经尝试在ListBox.ItemContainerStyle和DataTemplate中使用StyleTriggers,但我无法找到如何访问SomeObject.IsEnabled属性的方法。
抱歉颜色不够丰富,我是新手,不太擅长使用编辑器。
提前感谢。
我有一个绑定到ViewModel的UserControl,并且它有一个ListBox,ItemsSource=ObservableCollection是ViewModel的一个属性,就像下面所示:
每当我选择一个项目,我根据某些条件在其他几个项目上调用SomeObject.IsEnabled = false。我想将列表框项绑定到该IsEnabled属性,以便我可以在进行选择时使任何项目变灰。
ViewModel:
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,但我无法找到如何访问SomeObject.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>
抱歉颜色不够丰富,我是新手,不太擅长使用编辑器。
提前感谢。