У меня есть комбинированный список с правилами в представлении, и он работает хорошо, но я хочу, чтобы другое поле модели из источника элементов использовалось для привязки (или, как я использовал это), чтобы обновить другую оценку поля.
Например. если вы выбираете правило 1 в поле со списком, оно должно обновить поле оценки в представлении на 1, а если вы измените выбранный элемент на правило 2, оно должно отобразить 2 в поле оценки.
Мой код может быть немного искажен, потому что я экспериментировал «на пути сюда», чтобы достичь желаемого результата, у меня есть ScoreView с сеткой данных, источником элементов которой являются баллы:
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 (который я привязал к model.score) в качестве параметра команды ..
Может быть, я должен использовать выбранный элемент MatchVMRule, но текстовое поле счета связано с ViewModel Scores, а не с ViewModel правил?
Заранее спасибо,
Mike
ОБНОВЛЕНИЕ РЕШЕНО
В конце концов я решил эту проблему, создав две отдельные коллекции правил для реквизита и выбрал правило в моей MainScoreViewModel.
Я избавился от команды evento и обработал обновление поля оценки в моей модели оценки на основе оценки модели правила в установщике SelectedRule:
/// <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>