gpt4 book ai didi

silverlight - 在数据网格中初始化 ComboBox,Silverlight 4.0

转载 作者:行者123 更新时间:2023-12-03 10:24:45 24 4
gpt4 key购买 nike

我有带有链接到 ItemsSource 的 MyPlayer 对象列表的数据网格,网格内有链接到内部对象列表的 ComboBoxes,并且绑定(bind)工作正常:当我选择其中一个项目时,它的值被推送到数据模型并适本地在使用它的其他地方更新。

唯一的问题:我的 ComboBoxes 中不显示初始选择。我不知道为什么..?

ViewModel 的实例被分配给 View DataContext。这是带有 ComboBoxes 的网格(网格绑定(bind)到 ViewModel 的 SquadPlayers 属性):

    <data:DataGrid ="True" AutoGenerateColumns="False" ItemsSource="{Binding SquadPlayers}">
<data:DataGrid.Columns>
<data:DataGridTemplateColumn Header="Rig." Width="50">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Rigid, Mode=TwoWay}"
ItemsSource="{Binding IntLevels, Mode=TwoWay}"/>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>

这是 ViewModel 类(当从服务器接收到数据时,异步调用“_model_DataReceivedEvent”方法):
public class SquadViewModel : ViewModelBase<SquadModel>
{
public SquadViewModel()
{
SquadPlayers = new ObservableCollection<SquadPlayer>();
}

private void _model_DataReceivedEvent(List<SostavPlayerData> allReadyPlayers)
{
TeamTask task = new TeamTask { Rigid = 1 };
foreach (SostavPlayerData spd in allReadyPlayers)
{
SquadPlayer sp = new SquadPlayer(spd, task);
SquadPlayers.Add(sp);
}
RaisePropertyChanged("SquadPlayers");
}

这是 SquadPlayer 类(它的对象绑定(bind)到网格行):
public class SquadPlayer : INotifyPropertyChanged
{
public SquadPlayer(SostavPlayerData spd)
{
_spd = spd;

Rigid = 2;
}

public event PropertyChangedEventHandler PropertyChanged;

private int _rigid;
public int Rigid
{
get { return _rigid; }
set
{
_rigid = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Rigid"));
}
}
}

private readonly ObservableCollection<int> _statIntLevels = new ObservableCollection<int> { 1, 2, 3, 4, 5 };
public ObservableCollection<int> IntLevels { get { return _statIntLevels; } }

预计将所有“刚性”组合框设置为“2”值,但它们没有被选中(项目在下拉列表中,如果选择了任何值,它将进入 ViewModel)。

这个例子有什么问题?欢迎任何帮助。

谢谢。

最佳答案

将 XAML 的顺序更改为

ItemsSource="{Binding IntLevels, Mode=TwoWay}" 
SelectedItem="{Binding Rigid, Mode=TwoWay}"

我知道这看起来很有趣,但我以前遇到过这个问题。它试图在 ItemSource 存在之前绑定(bind) SelectedValue,这就是初始化后一切正常的原因。

关于silverlight - 在数据网格中初始化 ComboBox,Silverlight 4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2937422/

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