gpt4 book ai didi

silverlight - EventToCommand SelectionChanged 在 Combobox 中传递参数

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

我在 View 中有一个带有规则的组合框,它运行良好,但我希望 itemsource 中的模型的另一个字段用于绑定(bind)(或当我使用它时)更新另一个字段分数。
例如。如果您在组合框中选择规则 1,它应该将 View 中的分数字段更新为 1,如果您将选定项更改为规则 2,它应该在分数字段中显示 2。

我的代码可能有点残缺,因为我在“途中”进行了实验以达到预期的结果,我有一个带有数据网格的 ScoreView,其中 itemsource 是分数:

SelectionChangedCommand = new RelayCommand<string>((_score) => SelectedRuleChanged(_score));

private void SelectedRuleChanged(string _score)
{
int _tmpint;
_tmpint = this.SelectedScore.Model.score;
int.TryParse(_score, out _tmpint);
this.SelectedScore.Model.score = _tmpint;

//Todo weghalen lokale rules collectie en get_rules voids
//get_rules_by_ruleset(this.SelectedMatch.Model.ruleset);

}
<ComboBox
Height="23" HorizontalAlignment="Left"
Name="cmbRules" VerticalAlignment="Top" Width="100" ItemsSource="{Binding MatchVM.Rules}" SelectedValue="{Binding Model.ruleid, Mode=TwoWay}"
DisplayMemberPath="Model.name" SelectedValuePath="Model.ruleid">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding MainScore.SelectionChangedCommand, Mode=OneWay,
Source={StaticResource Locator}}" CommandParameter="{Binding Model.score}"/>
</i:EventTrigger>
</i:Interaction.Triggers>



我尝试将元素 selecteditem(我绑定(bind)到 model.score)作为命令参数传递..
也许我应该使用 MatchVMRule 的选定项,但分数文本字段绑定(bind)到分数 View 模型而不是规则 View 模型?

提前致谢,

麦克风

更新已解决
我终于通过在我的 MainScoreViewModel 中创建两个单独的 Prop 规则集合和选定规则来解决它。
我摆脱了 eventtocommand 并根据 SelectedRule 的 setter 中的规则模型的分数处理了我的分数模型中分数字段的更新:
    /// <summary>
/// Gets the SelectedRule property.
/// Changes to that property's value raise the PropertyChanged event.
/// </summary>
public RuleViewModel SelectedRule
{
get
{
return _selectedRule;
}

set
{
if (_selectedRule == value)
{
return;
}
_selectedRule = value;
this.SelectedScore.Model.score = this.SelectedRule.Model.score;
RaisePropertyChanged(SelectedRulePropertyName);
}
}



<ComboBox
Height="23" HorizontalAlignment="Left"
Name="cmbRules" VerticalAlignment="Top" Width="100" ItemsSource="{Binding ScoreVM.Rules,
Mode=TwoWay}" SelectedValue="{Binding Model.ruleid, Mode=TwoWay}"
DisplayMemberPath="Model.name" SelectedValuePath="Model.ruleid" SelectedItem="{Binding
ScoreVM.SelectedRule, Mode=TwoWay}">
</ComboBox>

最佳答案

使用 PropertyChange 怎么样?通知您的 ViewModel 以处理 SelectionChanged事件而不是尝试从 View 中处理它?

public ParentViewModel()
{
this.Model.PropertyChanged += Model_PropertyChanged;
}

void Model_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "ruleid":
this.SelectedScore.Model.Score = Model.Score;
}
}

关于silverlight - EventToCommand SelectionChanged 在 Combobox 中传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6991847/

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