gpt4 book ai didi

c# - DataBinding 集合和改变集合元素

转载 作者:行者123 更新时间:2023-11-30 21:58:08 24 4
gpt4 key购买 nike

我有一个集合和一个 ListView,我绑定(bind)了一个对象集合:

<ListView ItemsSource="{Binding Levels}"... />

这是一个关卡集合:

private ObservableCollection<Level> _levels;
public ObservableCollection<Level> Levels
{
get { return _levels; }
set { SetProperty(ref _levels, value); }
}

这是一个 Level 类:

public class Level : BindableBase
{
private double _value;
public double Value
{
get { return _value; }
set { SetProperty(ref _value, value); }
}

private bool _isChecked;
public bool IsChecked
{
get { return _isChecked; }
set { SetProperty(ref _isChecked, value); }
}

public SolidColorBrush ForegroundColor
{
get { return IsChecked ? new SolidColorBrush(Colors.Yellow) : new SolidColorBrush(Colors.BlueViolet); }
}
}

如果我在集合中添加元素,新元素将显示在 ListView 中,但是如果我更改集合中现有的元素,我看不到任何变化:

private void LvLevels_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (LvLevels.SelectedItem != null)
{
selectedLevel = (Level)LvLevels.SelectedItem;
foreach (var l in viewModel.Levels)
{
if (l.Value == selectedLevel.Value)
l.IsChecked = true; // it doesn't work
else
l.IsChecked = false;
}

// it works
// viewModel.Levels.Add(new Level { Value = 10, IsChecked = true});
}

为什么以及如何解决?

更新

这是我的 ItemTemplate:

                      <ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<Image Grid.Column="0"
Source="../Assets/icons/зоны.png"
Margin="10 0 0 0"/>
<TextBlock x:Name="tblock" Text="{Binding Value}" Grid.Column="1" FontSize="30"
Foreground="{Binding ForegroundColor}" />
<!-- Style="{StaticResource ZoneButtonText}" -->
</Grid>

</DataTemplate>
</ListView.ItemTemplate>

最佳答案

如果您希望 ForegroundColor 发生变化(这是一种猜测),您需要确保 WPF 组件知道它已经发生变化。当 IsChecked 发生变化时,您也需要发送 ForegroundColor 的变化通知。

哦,不要使用 == 比较 double 。 double 是floating point变量。

关于c# - DataBinding 集合和改变集合元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com