我正在使用model-view-viewmodel我目前有一個包含3個數據的類:2個整數和一個枚舉。M-V-VM WPF:在將Databound對象的父對象傳遞給IValueConverter的同時維護數據綁定的方法?
它的構造是這樣的:
//C#
public Outcome(OutcomeEnum outcomeEnum, Int32 acutalOutcomeData, Int32 expectedOutcomeData)
{
m_outcomeEnum = outcomeEnum;
m_actualData = acutalOutcomeData;
m_expectedData = expectedOutcomeData;
}
我有2個組合框旁邊,對方說我已綁定到結果對象(List<Outcome>
),我使用了「實際」的一個列表和「預期」整數值。
這部分代碼看起來是這樣的:(本的SelectedItem和的ItemsSource是在視圖模型依賴屬性)
<ComboBox ItemsSource="{Binding Path=OutcomeList}" SelectedItem="{Binding SelectedExpectedOutcome, Mode=TwoWay}" x:Name="PART_cbExpectedOutcome" Grid.Column="1" >
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Label Content="{Binding Path=ExpectedOutcomeData, Converter={StaticResource OutcomeDataToStringConverter}, ConverterParameter=Expected }" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox ItemsSource="{Binding Path=OutcomeList}" SelectedItem="{Binding SelectedActualOutcome, Mode=TwoWay}" x:Name="PART_cbActualOutcome" Grid.Column="2" >
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Label Content="{Binding Path=ActualOutcomeData, Converter={StaticResource OutcomeDataToStringConverter}, ConverterParameter=Actual}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我的問題是:我想傳遞給結果對象的引用進我正在使用的IValueConverter之間進行轉換,但這似乎不可能使用IConvertParameter,而是我將被迫使用Multibinding根據msdn post here。
我想簡化我的方法,創建一個相對簡單的多重綁定,這看起來像是過度殺傷。
我想只做一件事,我試圖傳入IValueConverter,它是確定OutcomeEnum的枚舉類型,以便我可以提供預期或實際數據值的正確格式。
有沒有更簡單的方法讓我能夠將Outcome對象傳入IValueConverter OutcomeDataToStringConverter
,同時保持與這個Outcome對象列表的雙向綁定?我接受建議。
這是一個好主意,我想的第一件事。問題是,如果我在兩個組合框上綁定了Outcome對象,如果我只有一個Outcome對象列表*兩個組合框將同步到同一個對象。實際上,這意味着當我改變一個組合框時,它可以改變另一個組合框的值,例如,列表中有3個項目,實際/預期等於1/1,2/2和3/3。如果您將組合框1更改爲2,則顯示2/2,當我真的想要2/1時。 – CrimsonX 2009-12-23 14:40:11
我相信你應該通過設置IsSynchronizedWithCurrentItem爲false來實現選擇組合框的分離......請讓我知道如果不是這樣的話。 – 2009-12-24 09:40:23