我有一系列bools与一周中的几天相关联 - Collection(){true,false,false,false,false,false,false};所以无论bool代表什么意味着这个集合适用于星期日(星期日是这周的第一天)。
现在我已将列表框的itemssource设置为此集合。
<ListBox ItemsSource={Binding Path=Collection, Mode=TwoWay}>
<ListBox.ItemTemplate>
<ToggleButton IsChecked={Binding Path=BoolValue, Mode=TwoWay}/>
</ListBox.ItemTemplate>
</ListBox>
但是我的Collection永远不会更新(我的集合是窗口上的依赖项属性)。另外“MyBool”类只是一个bool对象的包装器,实现了NotifyPropertyChanged。
任何想法.....我的实际代码非常复杂,所以上面的情况是一个残酷简化的版本,所以如果有必要做出假设等我会提供我的实际代码。
非常感谢,
Ú
答案 0 :(得分:1)
尝试在绑定
中设置UpdateSourceTrigger = PropertyChanged<ToggleButton IsChecked={Binding Path=BoolValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}/>
编辑: 创造了一个小例子,似乎很好。
包装类
public class MyBool : INotifyPropertyChanged
{
private bool _value;
public bool Value
{
get { return _value; }
set
{
_value = value;
NotifyPropertyChanged("Value");
}
}
public event PropertyChangedEventHandler PropertyChanged;
void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
XAML
<ListBox ItemsSource="{Binding Path=Users}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<ToggleButton IsChecked="{Binding Path=Value, Mode=TwoWay}" Content="MyButton"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
背后的代码
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public ObservableCollection<MyBool> Users { get; set; }
public MainWindow()
{
InitializeComponent();
Users = new ObservableCollection<MyBool>();
DataContext = this;
Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
FillUsers();
}
private void FillUsers()
{
for (int i = 0; i < 20; i++)
{
if(i%2 == 0)
Users.Add(new MyBool { Value = true });
else
Users.Add(new MyBool { Value = false});
}
}
}